Вопрос:

вызов адаптера viewpager из списка адаптеров

android listview android-viewpager adapter

128 просмотра

1 ответ

6 Репутация автора

У меня есть список. Каждый элемент из списка имеет 3 TextViews и ViewPager. Я скачал информацию о различных проектах с сервера и загрузил их в список. Каждый предмет имеет разные тексты и изображения. Я вызываю адаптер ViewPager из ListAdapter. Мое приложение возвращает информацию о проектах правильно, но изображения в 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 изображений каждого проекта адаптеру в виде строки.

Автор: Shorouk Adel Источник Размещён: 05.03.2017 01:51

Ответы (1)


0 плюса

1068 Репутация автора

Попробуй это

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;

}



  }
Автор: sreejith v s Размещён: 05.03.2017 02:12
Вопросы из категории :
32x32