滚动列表时,ListView数据会发生变化

时间:2014-06-03 05:23:55

标签: android listview

我正在使用带有textview和复选框的listview。从服务加载数据的地方。

我在列表中显示 20个项目,当我点击下一个按钮时,我会显示另外20个项目。 当我点击下一个按钮时,它正在正确加载,但是当我开始向下滚动以查看列表的最后一个值并再次移到顶部时,数据变得混乱并最终以7个值重新结束20个项目中的列表(7 + 7 + 6)。当我点击单个项目复选框时,会检查列表中重复的相同项目。

我的适配器的getView()方法:

编辑:

     package android.virtus;

    import java.util.ArrayList;

    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.CheckBox;
    import android.widget.TextView;

public class Adapter extends BaseAdapter{

private Context context;
LayoutInflater inflater;

CheckBox box;
ArrayList<String> textView1;
ArrayList<String> textView2;
ArrayList<String> textView3;


int listsize;
int i=0;
int size=20;


public Adapter(Context c, ArrayList<String> textView1, ArrayList<String> textView2, ArrayList<String> textView3,int listsize) {

    this.context=c;
    this.textView1=textView1;
    this.textView2=textView2;
    this.textView3=textView3;
    this.listsize=listsize;
    i=0;

}

@Override
public int getCount() {
    // TODO Auto-generated method stub

    return size;
}
@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return 0;
}

   public View getView(final int position, View arg1, ViewGroup arg2) {
    // TODO Auto-generated method stub

    View view=arg1;


    ViewHolder holder=null;


    if (view == null) {

        inflater = (LayoutInflater)   context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        view = inflater.inflate(R.layout.list, null);
        holder = new ViewHolder();

        holder.tv1=(TextView)view.findViewById(R.id.tV1);
        holder.tv2=(TextView)view.findViewById(R.id.tV2);
        holder.tv3=(TextView)view.findViewById(R.id.tV3);
        holder.cb=(CheckBox)view.findViewById(R.id.cB);


        view.setTag(holder);
    } else {

        holder = (ViewHolder)view.getTag();

    }

        if(listsize==20){

            holder.tv1.setText(textView1.get(position));
            holder.tv2.setText(textView2.get(position));
            holder.tv3.setText(textView3.get(position));    

            view.setId(position);
        }else{  

        int index=listsize-20;

        if(i<19){ 

            i=i+1;
            holder.tv1.setText(textView1.get(index+i));
            holder.tv2.setText(textView2.get(index+i));
            holder.tv3.setText(textView3.get(index+i));

            view.setId(index+i);

            }else{

            }
              }

    return view;

}

private static class ViewHolder {

    protected TextView tv1, tv2, tv3;
    protected CheckBox cb;

  }
 }

我正在从服务加载100个项目到数组列表并在列表中显示20个,当我点击下一个按钮时,我会从数组列表中显示另外20个项目。

修改

在第一张图片中,我检查了第一个项目,滚动后看到第二张图像,重复的相同项目会自动检查..

enter image description here enter image description here

0 个答案:

没有答案