1
我有一個GridView,其中每個單元格包含一個ImageView和TextView。當用戶單擊一個單元格時,它將該單元格的背景顏色更改爲灰色。但是,當我向下滾動時,也會選擇另一個單元(即背景顏色爲灰色)。當在GridView/ListView中選擇一個單元格時,它也會選擇另一個單元格
我的猜測是,這是因爲單元格重用與滾動時隱藏的單元格相同的視圖。
當我更改方向時也會發生這種情況。如果我選擇單元格1,當我改變方向時,現在選擇另一個單元格,而單元格1不是。
在此先感謝。
public class LazyFeaturedTopicItemAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<Topic> topics;
private static LayoutInflater inflater=null;
public PostItemImageLoader imageLoader;
public LazyFeaturedTopicItemAdapter(Activity a, ArrayList<Topic> d) {
activity = a;
topics=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new PostItemImageLoader(activity.getApplicationContext());
}
public int getCount() {
return topics.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public static class ViewHolder{
public ImageView imgThumbnail;
public TextView txtName;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
final Topic topicItem = topics.get(position);
if(convertView==null){
vi = inflater.inflate(R.layout.featured_topic_item, null);
holder=new ViewHolder();
holder.txtName = (TextView) vi.findViewById(R.id.featured_topic_item_name);
holder.imgThumbnail = (ImageView)vi.findViewById(R.id.featured_topic_item_thumbnail);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
holder.txtName.setText(topicItem.getName());
holder.imgThumbnail.setTag(topicItem.getPictureLink());
imageLoader.DisplayImage(topicItem.getPictureLink(), activity, holder.imgThumbnail);
vi.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(final View v) {
if (topicItem.isSelected) {
v.setBackgroundColor(Color.WHITE);
topicItem.isSelected = false;
}
else {
v.setBackgroundColor(Color.GRAY);
topicItem.isSelected = true;
}
}
}
);
return vi;
}
}
這是解決方案,以防有人感興趣。我在偵聽器之前添加了以下代碼。
if (topicItem.isSelected) {
vi.setBackgroundColor(Color.GRAY);
}
else {
vi.setBackgroundColor(Color.WHITE);
}
很好的答案! 我剛剛更新了上面的問題。非常感謝你。 – dannyroa 2011-02-11 21:22:59