有viewpager在Android的每个列表项的列表视图 [英] listview having viewpager in each list item in android

查看:415
本文介绍了有viewpager在Android的每个列表项的列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要你们的帮助,而数据设置为listItems中的列表视图。在我的列表视图每个项目都具有ViewPager,每个viewpager应该有不同的数据。我没有得到如何不同的数据设置为每个viewpager。实际上是基于列表项指标,我需要设置数据viewpager。请通过下面贴我的code段,并试图帮助我。

I'm in need of your help while setting the data to listitems in a listview. In my listview each item is having a ViewPager and each viewpager should have different data. I'm not getting how to set different data to each viewpager. Actually based on the listitem index I need to set the data viewpager. Please go through my code snippet pasted below and try to help me out.

public class MyListAdapter extends BaseAdapter {

private Activity activity;
private String [] titleData;
private int [] imageData;
private static LayoutInflater inflater=null;

private int iListPosition;
private GraphicalView graphView ;
ListView dashListView;
private Context context;
public MyListAdapter(View listView, Activity a, String[] titles, int[] images) {
    activity = a;

    context = a.getApplicationContext();
    dashListView = (ListView)listView;
}

public int getCount() {
    return titleData.length;
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    iListPosition = position;
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {


    LayoutInflater inflater = (LayoutInflater) activity.getApplicationContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.dash_board_list_row, parent, false);



MyPagerAdapter adapter = new MyPagerAdapter();
    ViewPager myPager = (ViewPager) rowView.findViewById(R.id.threepageviewer);
    myPager.setAdapter(adapter);
    myPager.setCurrentItem(0);

    return rowView;
} 

private class MyPagerAdapter extends PagerAdapter {

    public int getCount() {
            return 3;
    }

    public Object instantiateItem(View collection, int position) {

            LayoutInflater inflater = (LayoutInflater) collection.getContext()
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            int resId = 0;
            switch (position) {
            case 0:
                    resId = R.layout.weight_middle;


                    break;
            case 1:
                    resId = R.layout.weight_left;
                    break;
            case 2:
                    resId = R.layout.weight_right;
                    break;
            }

            View view = inflater.inflate(resId, null);
            if(resId == R.layout.weight_left  && iListPosition == 0){
            LinearLayout layout = (LinearLayout) view.findViewById(R.id.chartView);
            layout.addView(graphView);
           }

            ((ViewPager) collection).addView(view, 0);

            return view;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);

    }

    @Override
    public void finishUpdate(View arg0) {
            // TODO Auto-generated method stub

    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);

    }

    @Override
    public void restoreState(Parcelable arg0, ClassLoader arg1) {
            // TODO Auto-generated method stub

    }

    @Override
    public Parcelable saveState() {
            // TODO Auto-generated method stub
            return null;
    }

    @Override
    public void startUpdate(View arg0) {
            // TODO Auto-generated method stub

    }
}
}

但这里同样的数据被歌厅设置为所有的列表项的Viewpagers。理想的情况是我的要求是,设置不同的数据。请告知,如果您有/知道该任何解决方案我知道。

But here the same data is geting set to the Viewpagers of all the list items. Ideally my requirement is to set different data. Please let me know if you have/know any solution for this.

推荐答案

使用Viewpager作为列表项是一个坏主意,你的情况,使工作做如下改变。

Using Viewpager as ListItem is a bad idea, in your case to make it work make the following change.

 MyPagerAdapter adapter = new MyPagerAdapter(position);

在PagerAdapter:

in PagerAdapter:

private class MyPagerAdapter extends PagerAdapter {
    int mListPosition;
MyPagerAdapter(int listPosition) {
   mListPosition = listPosition;
}
public int getCount() {
        return 3;
}

和开关:

  switch (mListPosition) {
......
}

这篇关于有viewpager在Android的每个列表项的列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆