【发布时间】:2018-06-13 16:57:58
【问题描述】:
我正在编写一个小的 android 应用程序。 我有一个列表视图的问题。 单击条目时,应将数据结构的状态标记为选中或未选中。在数据结构中一切都很好,但是应该通过更改条目的背景颜色来可视化选择。 到目前为止一切都很好,但是在单击正确的元素后会更改其颜色,而且 每 9 个 元素(单击条目 0 -> 更改颜色,还有条目 8、条目 16 等等)在listview 但我不知道为什么。
问题:为什么不只是点击的条目改变了颜色?
这是我的 getView 代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItem = convertView;
if (listItem == null)
listItem = LayoutInflater.from(mContext).inflate(R.layout.listitem, parent, false);
final User currentUser = userList.get(position);
TextView username = listItem.findViewById(R.id.lv_username);
String state = "disabled";
if(currentUser.getSelected()) state = "enabled";
username.setText(currentUser.getUsername() + " - " + state);
listItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentUser.setSelected(!currentUser.getSelected());
if (currentUser.getSelected()) {
Log.d("onClick in Adapter", "selected");
v.setBackgroundColor(Color.WHITE);
}
else {
Log.d("onClick in Adapter", "not selected");
v.setBackgroundColor(Color.TRANSPARENT);
}
notifyDataSetChanged();
}
});
return listItem;
}
【问题讨论】: