在使用listview的过程中,经常需要记录listview的点击状态。并根据是否点击过设置不同的标志。
这里有一个好方法可以完成这个要求。
只需要在model中新增一个点击属性就可以很方便的完成。
比如:
public class GiftModel {
String integral;
int resId;
String name;
int isClick;
public int getIsClick() {
return isClick;
}
public void setIsClick(int isClick) {
this.isClick = isClick;
}
public String getIntegral() {
return integral;
}
public void setIntegral(String integral) {
this.integral = integral;
}
public int getResId() {
return resId;
}
public void setResId(int resId) {
this.resId = resId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "GiftModel [integral=" + integral + ", resId=" + resId + ", name=" + name + ", isClick="
+ isClick + "]";
}
}
isClick是model里没有的属性。
在初始化adapter需要的list前,初始化model里isclick的属性
private void init() {
mdataStrings = new ArrayList<GiftModel>();
GiftModel model;
String[] nameStrings = { "玩具军人", "大富翁", "仙剑奇侠传", "极品飞车" };
String[] integralStrings = { "300", "800", "1500", "2500" };
int[] resIDs = { R.drawable.icon_exchange_1, R.drawable.icon_exchange_2, R.drawable.icon_exchange_3,
R.drawable.icon_exchange_4 };
for (int i = 0; i < 4; i++) {
model = new GiftModel();
model.setIntegral(integralStrings[i]);
model.setName(nameStrings[i]);
model.setResId(resIDs[i]);
model.setIsClick(0);
mdataStrings.add(model);
}
}
在适配器里面getview方法中
if (item.getIsClick() == 0) {
helper.setImageResource(R.id.iv_exchage_item_flag, R.drawable.icon_exchage_unselect);
} else {
helper.setImageResource(R.id.iv_exchage_item_flag, R.drawable.icon_exchage_select);
}
设置item的状态标志。
这一切完成后,只需要在list里面改变对象的点击状态属性。重新加载即可。
gv_exchage_gift.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if (mdataStrings.get(position).getIsClick() == 0) {
mdataStrings.get(position).setIsClick(1);
} else {
mdataStrings.get(position).setIsClick(0);
}
mAdapter2.setdata(mdataStrings);
}
});