Я на самом деле столкнулись с проблемой, что я не знаю, как решить ...OnItemClick и пункт вид
На самом деле, я хочу, чтобы изменить цвет и отобразить изображение на 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();
}
});
}
Спасибо за вашу помощь
EDIT: Часть с по модулю и фона работает отлично, моя проблема заключается в слушателя, это похоже на неправильное представление, которое вводится в функцию OnItemClick.
EDIT 2: С рисунком, это лучше, я думаю
Не могли бы вы уточнить подробности? я не понял, в чем ваша проблема и чего вы хотите достичь. –
Я редактировал свой пост – mfrachet
Я проверил ваш код .. В этом случае вы используете ImageView вместо флажка. 2nd thing onItemНажмите, что вы получаете предмет класса. item.isChecked(), в котором вы получите старое значение, а не новое. –