我有一个listview
有20个项目。在列表视图的每一行中,都有一个Button
。我想根据位置更改Button文本。
奇怪的问题是当我滚动,文本被交换。
按照我迄今为止所做的尝试,
public class MyAdapter extends BaseAdapter {
private Activity activity;
private String[] data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public MyAdapter(Activity a, String[] d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.item, null);
Button text=(Button)vi.findViewById(R.id.text);;
ImageView image=(ImageView)vi.findViewById(R.id.image);
Log.i("POSITION:", ""+position);
if(position==2 || position==3)
text.setText("Invited");
if(position==5 || position==8)
{
text.setText("Sent");
}
imageLoader.DisplayImage(data[position], image);
return vi;
}
}
答案 0 :(得分:0)
将逻辑更改为:
if (position==2 || position==3) {
text.setText("Invited");
}
else if (position==5 || position==8) {
text.setText("Sent");
}
else {
text.setText("Invite");
}
由于视图回收,没有后备“else”,您将在错误的行中得到错误的文本。
答案 1 :(得分:0)
放
else
{
text.setText("Invite");
}
之后
if(position==5 || position==8)
答案 2 :(得分:0)
sizes[1:]
// firstcolumn变量根据列表视图的位置存储第一列的值