我正在使用带有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个项目。
修改
在第一张图片中,我检查了第一个项目,滚动后看到第二张图像,重复的相同项目会自动检查..