【发布时间】:2014-06-18 11:44:56
【问题描述】:
我实际上面临一个我不知道如何解决的问题......
其实我是想改变颜色,点击后在listView上显示图片。
问题是当我点击我的第一个项目时,第 0 个、第 9 个、第 18 个等......也发生了变化......就像 View onItemClick 只占用列表视图的可见部分(显示的项目,没有滚动)
我不知道如何解决它。
我的适配器:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater
.inflate(R.layout.item_anomalies, null);
holder = new ViewHolder();
holder.txtTitre = (TextView) convertView
.findViewById(R.id.titre);
holder.img = (ImageView) convertView
.findViewById(R.id.img);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final AnomalieRowItem rowItem = (AnomalieRowItem) getItem(position);
holder.txtTitre.setText(rowItem.getLibelle());
if (position % 5 == 0) {
holder.img.setBackgroundColor(0xffED695A);
} else {
if (position % 4 == 0) {
holder.img.setBackgroundColor(0xffEB5443);
} else {
if (position % 3 == 0) {
holder.img.setBackgroundColor(0xffEA4735);
} else {
if (position % 2 == 0) {
holder.img.setBackgroundColor(0xffE93825);
} else {
holder.img.setBackgroundColor(0xffD52815);
}
}
}
}
return convertView;
}
我的听众:
private void initListener() {
m_ListeAnomalie.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
AnomalieRowItem item = m_ListeItem.get(position);
ImageView imgCheck = (ImageView) view.findViewById(R.id.check);
LinearLayout layout = (LinearLayout) view.findViewById(R.id.item);
if (item.isChecked()) {
layout.setBackgroundColor(0xffefefef);
item.setChecked(false);
imgCheck.setVisibility(View.GONE);
} else {
layout.setBackgroundColor(0xffdddddd);
item.setChecked(true);
imgCheck.setVisibility(View.VISIBLE);
}
m_Adapter.notifyDataSetChanged();
}
});
m_Valider.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
end();
}
});
}
感谢您的帮助
编辑:带模数和背景的部分工作正常,我的问题出在侦听器中,好像不是在 OnItemClick 函数中注入的正确视图
编辑2:我认为最好有图片
【问题讨论】:
-
您能详细说明一下吗?我不明白你的问题是什么以及你想要实现什么。
-
我已经编辑了我的帖子
-
我检查了你的代码.. 因为你使用 ImageView 而不是 Checkbox。第二件事 onItemClick 你得到项目 Class 。 item.isChecked() ,因为您将获得旧值而不是新值。
-
您可以在 getView() 中实现代码。 checkBox 的 onClick 方法。
-
要么,在 onItemClicked() 事件中,您必须使用视图获取子视图,然后将其转换为复选框并检查是否为真..
标签: android listview view onitemclick