我实际上面临着一个我不知道如何解决的问题......
其实我是想在listView上点击的时候改变颜色显示一张图片。
问题是当我单击我的第一个项目时,第 0、第 9、第 18 等...也发生变化...就像 View onItemClick 只占用 ListView 的可见部分(显示的项目,没有滚动)
不知道怎么解决。
我的适配器:
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 函数中注入(inject)的正确 View
EDIT 2:有图片,我觉得更好
最佳答案
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);
}
}
}
}
// add this lines in getView() after above logic.
if (rowItem.isChecked()) {
layout.setBackgroundColor(0xffefefef);
imgCheck.setVisibility(View.GONE);
} else {
layout.setBackgroundColor(0xffdddddd);
imgCheck.setVisibility(View.VISIBLE);
}
关于android - OnItemClick 和项目 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24284702/