簡體   English   中英

如何在Android中的ListView行內顯示ViewPager

[英]How to show ViewPager inside a row of ListView in Android

我正在嘗試構建一個需要ViewPager在ListView中顯示的應用程序。 這類似於FlipKart或SnapDeal應用程序。

盡管我不確定這是他們所做的,所以我只是猜測可能已經實現了。 因此,如果有更好的解決方案,那么我肯定會接受。

我點擊了此鏈接此鏈接以及到目前為止所做的事情如下:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView= (ListView) findViewById(R.id.listView);
        ArrayList<MyPagerAdaper> adapers=new ArrayList<>();
        for(int i=0; i<10; i++){
            ArrayList<String> list=getNewList();
            MyPagerAdaper pagerAdaper=new MyPagerAdaper(list);
            adapers.add(pagerAdaper);
        }
        MyListAdapter listAdapter=new MyListAdapter(adapers);
        listView.setAdapter(listAdapter);
    }

    private ArrayList<String> getNewList() {
        ArrayList<String> list=new ArrayList<>();
        list.add("Pankaj");
        list.add("Manisha");
        list.add("Pari");
        list.add("Piggy");
        list.add("Harish");
        return list;
    }

    private class MyListAdapter extends BaseAdapter{
        private ArrayList<MyPagerAdaper> adapers;
        private LayoutInflater inflater;

        public MyListAdapter(ArrayList<MyPagerAdaper> adapers) {
            this.adapers = adapers;
            inflater=LayoutInflater.from(getBaseContext());
        }

        @Override
        public int getCount() {
            return adapers.size();
        }

        @Override
        public Object getItem(int position) {
            return adapers.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view=convertView;
            Viewholder viewholder;
            if(view==null){
                view=inflater.inflate(R.layout.layout_list_item, parent, false);
                viewholder=new Viewholder();
                viewholder.pager= (ViewPager) view.findViewById(R.id.viewPager);
                view.setTag(viewholder);
            }else {
                viewholder= (Viewholder) view.getTag();
            }
            MyPagerAdaper adaper= (MyPagerAdaper) getItem(position);
            viewholder.pager.setAdapter(adaper);
            return view;
        }
        private class Viewholder{
            ViewPager pager;
        }
    }

    private class MyPagerAdaper extends PagerAdapter{
        private ArrayList<String> list;
        private LayoutInflater inflater;

        public MyPagerAdaper(ArrayList<String> list) {
            this.list = list;
            inflater=LayoutInflater.from(getBaseContext());
        }

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            View view=inflater.inflate(R.layout.layout_page, container, false);
            TextView textView= (TextView) view.findViewById(R.id.textView);
            String s=list.get(position);
            textView.setText(s);
            container.addView(view);
            return view;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view.equals(object);
        }
    }
}

我面臨的問題是,除了動作條下方頂部的細灰色條之外,屏幕上什么都沒有顯示。

編輯1:
抱歉,我錯過了getCount()方法。 我已進行了更正,但問題仍然存在。

編輯2:
更改后,我已經更新了上面的代碼。

編輯3:
屏幕就是這樣的。 在此處輸入圖片說明 任何幫助是極大的贊賞。 提前致謝。

在MyPagerAdaper內部,更改此方法

@Override
    public int getCount() {
        return 0;
    }

@Override
    public int getCount() {
        return list.size();
    }

和內部InstantiateItem方法將視圖添加到容器中,如下所示:

 @Override
    public Object instantiateItem(ViewGroup container, int position) {
.
.  
.
container.addView(view);
return view;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM