从列表适配器调用viewpager适配器

时间:2017-03-05 13:51:20

标签: android listview android-viewpager adapter

我有清单。列表中的每个项目都有3个TextView和一个ViewPager。我从服务器下载了有关不同项目的信息,并将它们上传到列表。每个项目都有不同的文字和图像。我从ListAdapter调用ViewPager的适配器。我的应用程序返回正确的项目信息,但ViewPager中的图像在所有项目中都是相同的:它们是上一个项目的图像。那么,如何解决呢?

我的ListAdapter:

public class loadersfragment extends ArrayAdapter<Projects> {

public Context context;
private ArrayList<Projects> values;
CustomerAdapter adapter;
private LayoutInflater inflater;
String[] imagesfortest={"http://img1.sendscraps.com/se/042/004.jpg","http://i.telegraph.co.uk/multimedia/archive/03589/Wellcome_Image_Awa_3589699k.jpg","http://www.freedigitalphotos.net/images/category-images/131.jpg"};

private String[] img;

public loadersfragment(Context context, ArrayList<Projects> values) {
    super(context,R.layout.listitem,values);

    this.context = context;
    this.values = values;

    inflater = LayoutInflater.from(context);

}

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


    if (null == convertView) {
        convertView = inflater.inflate(R.layout.listitem, parent, false);

    }

    TextView textView = (TextView) convertView.findViewById(R.id.name);
    TextView textView2 = (TextView) convertView.findViewById(R.id.description);
    TextView textView3 = (TextView) convertView.findViewById(R.id.status);
    TextView textView4 = (TextView) convertView.findViewById(R.id.version);
    String [] imageses;


    Projects mProduct = values.get(position);

    textView.setText(mProduct.getyourText());
    textView2.setText(mProduct.getyourdescription());
    textView3.setText(mProduct.getyourstatu());
    textView4.setText(mProduct.getYourversion());
  imageses=mProduct.getYourimages();
    ViewPager viewPager = (ViewPager)convertView.findViewById(R.id.view_pager);
    adapter = new CustomerAdapter(getContext(),imageses);
    viewPager.setAdapter(adapter);
    viewPager.setCurrentItem(0);
   // adapter.setTimer(viewPager,5000,4,imagesfortest.length);
    //viewPager.setPageTransformer(true, new ZoomOutPageTransformer());

     adapter.autoSlider(viewPager);


    return convertView;

}
  }

我的ViewPager适配器:

公共类CustomerAdapter扩展了PagerAdapter {

private Context ctx;
private  String[] urls;
private LayoutInflater inflater;
final Handler handler = new Handler();
public Timer swipeTimer ;

public CustomerAdapter(Context ctx,String []urls){
    this.ctx = ctx;
    this.urls = urls;
}

@Override
public int getCount() {
    return urls.length;
}

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

@Override
public Object instantiateItem(ViewGroup container, int position) {
    inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.swip,container,false);
    ImageView img =(ImageView)v.findViewById(R.id.itemview);

    Picasso.with(ctx).load(urls[position]).into(img);

    container.addView(v);
    return v;
}

@Override
public void destroyItem(View container, int position, Object object) {
    container.refreshDrawableState();
}
public void autoSlider(final ViewPager viewPager) {

    final Runnable rr = new Runnable() {
        public void run() {
            int pos = viewPager.getCurrentItem();
            int i=0;
            if(pos > i && pos != urls.length - 1){
                i = pos;
                i++;
            }

            else if(pos < (i-1)){
                i = pos;
                i++;
            }
            else if(pos == i){
                i = pos;
                i++;
            }
            viewPager.setCurrentItem(i, true);
            viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
            i++;
            if (i >= urls.length)
                i = 0;
            autoSlider(viewPager);
        }};
    handler.postDelayed(rr, 3000);
}

注意:我以字符串的形式将每个项目的图像URL发送到适配器。

1 个答案:

答案 0 :(得分:0)

试试这个

public class loadersfragment extends ArrayAdapter<Projects> {

List<CustomerAdapter> adapters = new ArrayList<>();


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


    if (null == convertView) {
        convertView = inflater.inflate(R.layout.listitem, parent, false);

    }

    TextView textView = (TextView) convertView.findViewById(R.id.name);
    TextView textView2 = (TextView) convertView.findViewById(R.id.description);
    TextView textView3 = (TextView) convertView.findViewById(R.id.status);
    TextView textView4 = (TextView) convertView.findViewById(R.id.version);
    String [] imageses;


    Projects mProduct = values.get(position);

    textView.setText(mProduct.getyourText());
    textView2.setText(mProduct.getyourdescription());
    textView3.setText(mProduct.getyourstatu());
    textView4.setText(mProduct.getYourversion());
  imageses=mProduct.getYourimages();
    ViewPager viewPager = (ViewPager)convertView.findViewById(R.id.view_pager);

CustomerAdapter adapter = new CustomerAdapter(getContext(),imageses);
adapters.add(adapter);
    viewPager.setAdapter(adapters.get(position));
    viewPager.setCurrentItem(0);
   // adapter.setTimer(viewPager,5000,4,imagesfortest.length);
    //viewPager.setPageTransformer(true, new ZoomOutPageTransformer());

    adapters.get(position).autoSlider(viewPager);


    return convertView;

}



  }
相关问题