Посмотреть пейджер в списке?

Я использую view pager в элементе listview. Я хочу показывать изображения в виде пейджера, но ленивая загрузка не работает с ним. Пожалуйста, дайте мне какое-либо решение. Я пробовал много ленивых файлов загрузки, но некоторые из них работают. Некоторые из них держат пользовательский интерфейс.

Код, который я сейчас использую, работает хорошо, но не показывает изображения в первый раз. Мне нужно прокручивать список вниз, а затем прокручивать вверх, только показывается. Я не знаю, в чем проблема, пожалуйста, дайте мне какое-то решение, что мне нужно сделать?

Я отправляю свой код адаптера: –

Это мой код получения:

public View getView(final int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater mInflater = (LayoutInflater) objProp.activity .getApplicationContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE); v = mInflater.inflate(R.layout.adapter_walllayout, null); } // Get Controls final viewHolder vh = new viewHolder(); vh.txtview_Question = (TextView) v.findViewById(R.id.textView1); vh.textview_CommentCount = (TextView) v .findViewById(R.id.textVew_WallTotalComments); vh.textview_LikeCount = (TextView) v .findViewById(R.id.textVew_WallTotalokay); vh.ViewPager_Images = (ViewPager) v.findViewById(R.id.pager); vh.imageview_Profile = (ImageView) v .findViewById(R.id.imageview_userImage); vh.textview_PostDate = (TextView) v .findViewById(R.id.textView_PostDate); vh.textview_UserName = (TextView) v .findViewById(R.id.textVew_WallUserName); // SetDatato controls // Set Data vh.txtview_Question .setText(objProp.wallDataList.get(position).wallPost_Name); vh.txtview_Question.setTypeface(fontsFamily.getFont( objProp.activity.getApplicationContext(), true)); vh.textview_UserName .setText(objProp.wallDataList.get(position).wallPost_User_Name); vh.textview_UserName.setTypeface(fontsFamily.getFont( objProp.activity.getApplicationContext(), true)); final Vector pages = new Vector(); objProp.activity.runOnUiThread(new Runnable() { @Override public void run() { vh.ViewPager_Images.setOffscreenPageLimit(4); for (int i = 0; i < objProp.wallDataList.get(position).wallPost_Images_Data .size(); i++) { final int imagePosion = i; LayoutInflater mInflaterImage = (LayoutInflater) objProp.activity .getApplicationContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE); View vImage = mInflaterImage.inflate( R.layout.wallimagepageradaper, null); ImageView imageView = (ImageView) vImage .findViewById(R.id.imageView1); imageView.setTag(objProp.wallDataList.get(position).wallPost_Images_Data .get(i).qst_Wall_Image); CheckBox chk = (CheckBox) vImage .findViewById(R.id.checkBox1); /* * loadLooksImages.fetchDrawableOnThread(objProp.wallDataList * .get(position).wallPost_Images_Data * .get(i).qst_Wall_Image, imageView); */ imageLoader_RelativeLayout.DisplayImage( objProp.wallDataList.get(position).wallPost_Images_Data .get(i).qst_Wall_Image, imageView); /*imageLoader_RelativeLayout.DisplayImage( objProp.wallDataList.get(position).wallPost_Images_Data .get(i).qst_Wall_Image, imageView); */ // Get Controls vh.percentageLayout = (RelativeLayout) vImage .findViewById(R.id.layoutPercent); vh.percentageLayout.setVisibility(View.GONE); vh.percentageLayout.setId(objProp.wallDataList .get(position).wallPost_Images_Data .get(imagePosion).qst_Wall_ImageID); vh.textView_Percentage = (TextView) vImage .findViewById(R.id.textView_PercentCount); vh.textView_percentVoteCount = (TextView) vImage .findViewById(R.id.textView1_PercentVoteCount); // Set Data Double d = Double.parseDouble(objProp.wallDataList .get(position).wallPost_Images_Data.get(i).qst_Wall_Image_Percentage); int val = d.intValue(); vh.textView_Percentage.setText(val + "%"); vh.textView_Percentage.setTypeface(fontsFamily.getFont( objProp.activity.getApplicationContext(), true)); vh.textView_percentVoteCount.setTypeface(fontsFamily .getFont(objProp.activity.getApplicationContext(), true)); vh.textView_percentVoteCount.setText(objProp.wallDataList .get(position).wallPost_Images_Data.get(i).qst_Wall_Image_LikeCount + " Votes"); chk.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { new Service_LikeImage(objProp.activity) .execute(objProp.wallDataList.get(position).wallPost_Images_Data .get(imagePosion).qst_Wall_ImageID + ""); RelativeLayout lay = (RelativeLayout) objProp.activity .findViewById(objProp.wallDataList .get(position).wallPost_Images_Data .get(imagePosion).qst_Wall_ImageID); lay.setVisibility(View.VISIBLE); } }); // //system.out.println("OKKKKKK "+i); pages.add(vImage); } } }); // system.out.println("aaa "+pages.size()); CustomPagerAdapter adap = new CustomPagerAdapter( objProp.activity.getApplicationContext(), pages); vh.ViewPager_Images.setAdapter(adap); vh.textview_CommentCount.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(objProp.activity, OkayComments.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("wallPostPosition", position); intent.putExtra("imageNumber", imagePsotioninPager); objProp.activity.startActivity(intent); } }); vh.textview_LikeCount.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(objProp.activity, Results.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("qcode", objProp.wallDataList.get(position).wallPost_ID); objProp.activity.startActivity(intent); } }); imageLoader.DisplayImage( objProp.wallDataList.get(position).wallPost_User_Image, vh.imageview_Profile); String totComments = objProp.wallDataList.get(position).wallPost_Images_Data .get(0).qst_Wall_Image_CommentCount + ""; vh.textview_CommentCount.setText(totComments + " Comments"); vh.textview_CommentCount.setTypeface(fontsFamily.getFont( objProp.activity.getApplicationContext(), true)); vh.textview_LikeCount .setText(objProp.wallDataList.get(position).wallPost_Images_Data .get(0).qst_Wall_Image_LikeCount + " Okay"); vh.textview_LikeCount.setTypeface(fontsFamily.getFont( objProp.activity.getApplicationContext(), true)); return v; } public class viewHolder { TextView txtview_Question; TextView textview_CommentCount; TextView textview_LikeCount; TextView textview_UserName; TextView textview_PostDate; ViewPager ViewPager_Images; ImageView imageview_Profile; TextView textView_Percentage; TextView textView_percentVoteCount; RelativeLayout percentageLayout; // Image in ViewPager ImageView imageView_PostImage; } 

Прежде всего. Я не очень уверен, насколько это серьезно, потому что вы пытаетесь использовать view pager в качестве элемента списка. Дело не в том, что это невозможно, но просто здесь слишком много слоев. Надеюсь, вы по достоинству оцените работу и усилия, внесенные в этот кусок кода, и я надеюсь, что это поможет вам решить проблему. Так что наслаждайтесь кодом .. 🙂

1) В этом случае есть 2 адаптера. Сначала для ListView Second для ViewPager

2) Оба адаптера имеют разные функции и элементы списка.

3) Вы используете один адаптер в другом адаптере.

4) Затем вы используете финальный адаптер, чтобы раздуть ListView и установить адаптер …: D

Вот как идет код: я буду делать это шаг за шагом

Шаг 1. Создание простого classа модели:

  public class ModelClass { private String titleToDisplay; public ModelClass(String question) { super(); this.titleToDisplay = question; } public String getTitleToDisplay() { return titleToDisplay; } public void setTitleToDisplay(String titleToDisplay) { this.titleToDisplay = titleToDisplay; } } 

Шаг 2: Создание пейджера просмотра Адаптер и раздувание его будут представлять собой элементы classа модели. Это базовый адаптер пейджера!

 public class ViewPagerAdapter extends PagerAdapter { ArrayList arrayModelClasses = new ArrayList(); @SuppressLint("NewApi") @Override public void finishUpdate(ViewGroup container) { // TODO Auto-generated method stub super.finishUpdate(container); } public ViewPagerAdapter() { super(); } public ViewPagerAdapter(ArrayList arrayModelClasses) { super(); this.arrayModelClasses = arrayModelClasses; } @Override public int getCount() { return arrayModelClasses.size(); } @Override public boolean isViewFromObject(View collection, Object object) { return collection == ((View) object); } @Override public Object instantiateItem(View collection, int position) { // Inflating layout LayoutInflater inflater = (LayoutInflater) collection.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.drawer_list_item, null); TextView itemText = (TextView) view.findViewById(R.id.title); try { itemText.setText(arrayModelClasses.get(position) .getTitleToDisplay()); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } ((ViewPager) collection).addView(view, 0); return view; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((View) object); } } 

Шаг 3: Создание адаптера для ListView

ПРИМЕЧАНИЕ. Здесь я использую предыдущий адаптер, и в этом адаптере я использую пейджер представления как элемент списка.

 public class ListViewPagerAdapter extends ArrayAdapter { ViewPagerAdapter mViewPagerAdapter; private Context context; private ArrayList navigationItems; private int selectedIndex; public ListViewPagerAdapter(Context context, ArrayList navigationItems) { super(context, R.layout.view_pager_list_view, navigationItems); this.context = context; this.navigationItems = navigationItems; } @Override public int getCount() { return navigationItems.size(); } public void setSelectedIndex(int position) { selectedIndex = position; notifyDataSetChanged(); } @Override public ModelClass getItem(int position) { return navigationItems.get(position); } @Override public long getItemId(int position) { return position; } @SuppressLint("NewApi") @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.view_pager_list_view, null); } ViewPager vp = (ViewPager) convertView.findViewById(R.id.list_pager); if (selectedIndex != -1 && position == selectedIndex) { vp.setBackground(getContext().getResources().getDrawable( R.drawable.gradient_selected)); } else { vp.setBackground(getContext().getResources().getDrawable( R.drawable.gradient)); } mViewPagerAdapter = new ViewPagerAdapter(navigationItems); vp.setAdapter(mViewPagerAdapter); return convertView; } } 

Шаг 4: Я устанавливаю этот последний адаптер («ListViewPagerAdapter») в свой список.

ПРИМЕЧАНИЕ. Здесь я использую этот адаптер в одном из моих fragmentов. Вы можете использовать это просто в своем обычном classе активности, и он тоже будет работать.

 public class CampaignView extends Fragment { ListViewPagerAdapter listViewPagerAdapter; public CampaignView() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View campainview = inflater.inflate(R.layout.campaignview, container, false); return campainview; } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); String[] s = { "a", "b", "c", "d", "b", "c", "d", "b", "c", "d", "b", "c", "d", "b", "c", "d", "b", "c", "d" }; ArrayList aList = new ArrayList(); for (String s1 : s) { aList.add(new ModelClass(s1)); } ListView lv1 = (ListView) getActivity().findViewById( R.id.campaignListView); // lv1.setAdapter(new ArrayAdapter(getActivity(), // android.R.layout.simple_list_item_1,aList)); listViewPagerAdapter = new ListViewPagerAdapter(getActivity(), aList); lv1.setAdapter(listViewPagerAdapter); } } 

Наконец, для этого кода есть несколько fragmentов макетов.

Первый: сам список:

    

Второе: ViagerLayoutItem (строки):

     

Наконец: Элементы списка ящиков для элементов списка:

        

Изображение для работы:

Изображения http://sofru.miximages.com/android/5w7e.png Изображения http://sofru.miximages.com/android/8j5t.png

Сообщите мне, есть ли какие-либо сомнения в этом коде. Я буду рад ответить.

Надеюсь, вам понравилось, и я желаю вам всего наилучшего реализовать это. Я потратил несколько минут на этот кусок кода. Надеюсь, это поможет всем .. Удачи .. 🙂

Существует пример репозитория github, который я нашел очень полезным, когда я пытался что-то подобное этому. Это может быть очень полезно. Вы можете создать эту ссылку

В этом примере,

Вы увидите, что viewpager добавлен как элемент списка. И реализация прокрутки прокрутки делает прокручиваемое списком, иначе оно не прокручивается вниз

Давайте будем гением компьютера.