Anzeigen-Halter OnClickListener event Problem
Erstelle ich ein listview-adapter mit dem anzeigen-Halter :
final ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.activity_list_layout, null);
holder = new ViewHolder();
//Layout Code here
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
Einstellung Onclick-Listener :
holder.view.setOnClickListener(titleListener);
final OnClickListener titleListener = new OnClickListener() {
@Override
public void onClick(View v) {
holder.view.setBackgroundResource(R.drawable.top_bar);
notifyDataSetChanged();
}
};
Innerhalb des Onclick-listner, ändere ich das hintergrund Bild des ausgewählten Ansicht. Aber hier, mit dem ausgewählten Element, für andere Elemente in der gleichen listview, wird das Hintergrundbild immer verändert. Bitte mir empfehlen, welche änderungen muss ich machen, um das zu ändern BG nur für das ausgewählte Element.
Aktualisierten code für getview :
final ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(
R.layout.activity_news_list_layout, null);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.image = (ImageView) convertView
.findViewById(R.id.thumbImage);
holder.view = (RelativeLayout) convertView.findViewById(R.id.tView);
holder.opacityView = (View) convertView
.findViewById(R.id.opacity_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.view.setOnClickListener(titleListener);
final OnClickListener titleListener = new OnClickListener() {
@Override
public void onClick(View v) {
holder.view.setBackgroundResource(R.drawable.top_bar);
notifyDataSetChanged();
}
};
holder.view.setOnClickListener(titleListener);
return convertView;
Bitte überprüfen Sie das Bild, den ich ausgewählt habe, die Zeile "Das Dubai Community", sondern der hintergrund wurde geändert, für "ich war Zuversichtlich" auch. Es gibt einige andere Zeilen, die auch ausgewählt wurde, die auf das click-Ereignis
- plz, zeigen Sie alle code in der getView()
- Ich denke dein problem ist ähnlich wie this...
- Können Sie nur versuchen, um den hintergrund wie diese
v.setBackgroundResource(R.drawable.top_bar);
auch Sie haben, um den code besser zu verwalten Ansichten. - Versucht, aber Gleiches Ergebnis 🙁
- Warum sind Sie Einstellung ein
onClickListener
innen Ihre adapter? Wenn der adapter wird angewendet, um eineListView
sollten Sie keine Verarbeitung des Ereignisses in derListView
'ssetOnItemClickListener
? - Besser Sie verwenden drawable-Selektor, um Platz für diese.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
bitte fügen Sie über der Zeile ...
Verwenden-Selektor zum auswählen einer Zeile klicken Sie auf:
list_selector.xml:
Erstellen dieser xml anwenden und im hintergrund der Zeile Liste.
Dann bewerben Sie sich setActivated(true) an, dass die Halter anzeigen, wenn darauf geklickt wird. Das ist es. Dies ist die richtige Art und Weise zu implementieren selector.
in Benutzerdefinierten Adapter OnBinviewHolder. Versuchen Sie es.