Wie kann man den Wahlmodus einzeln für die Listenansicht mit Bildern einstellen

Ich habe eine Listenansicht mit Bild.Wenn ich jedes Element auswähle das Bild ändert sich auf geklicktes Bild.But, wenn ich ein anderes Element auswählen beide Bilder ändert.Ich möchte nur das ausgewählte Element, um das Bild zu ändern.Es muss wie Radio-Taste mit einer einzigen Wahl funktionieren Mode.pls helfen

public class ProvierActivity extends Activity { private String text[] = { "BroadStripe-Cable (Seattle)", "BroadStripe-Digital (Seattle)", "BroadStripe-Cable (Seattle)", "Comcast king county south)", "BroadStripe-Cable (Seattle)", "Comcast king county south", "BroadStripe-Digital (Seattle)", "BroadStripe-Digital (Seattle)", "BroadStripe-Cable (Seattle)", "Comcast king county south" }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final ListView list = (ListView) findViewById(R.id.listview_id); list.setAdapter(new ArrayAdapter<String>(this, R.layout.list, R.id.title, text)); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) { // TODO Auto-generated method stub if (view.findViewById(R.id.img).getVisibility() == ImageView.VISIBLE) { ImageView icon = (ImageView) view.findViewById(R.id.img); icon.setImageResource(R.drawable.checked); } } }); } } 

  • Kotlin auf Android: Kann nicht finden, Hauptverschmelzung Manifest. Was verursacht diesen Fehler?
  • Benachrichtigung Hintergrund in Android Lollipop ist weiß. Wie kann ich das ändern?
  • Schieben Sie nach rechts auf Android Animationen
  • Wie kann ich sehen, lange Layout in Vorschau in Android Studio
  • So erstellen Sie Material Design wie benutzerdefinierte Scrollbar mit Zahlen und Alphabete Blase in recylerview
  • Android: Senden eines Bytes Arrays über Http POST
  • Begrenzung der Größe des Cache-Verzeichnisses
  • Unity3D und Android Studio Integration
  • Ist es möglich, die BitmapFactory.decodeFile-Methode zu verwenden, um ein Bild von der HTTP-Location zu dekodieren?
  • Schreibe% in strings.xml von android
  • Wie man eigene App von / system / app deinstalliert?
  • Start von Fragment mit Transition (API 21 Unterstützung)
  • 2 Solutions collect form web for “Wie kann man den Wahlmodus einzeln für die Listenansicht mit Bildern einstellen”

    Die empfohlene Lösung hier ist, auf die eingebaute ListView-Auswahlunterstützung zu spezifizieren, die den Einwahlmodus für sie spezifiziert:

     list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

    Dann sollten Sie Ihre List-Element zu implementieren implementieren Checkable Interface; Dies erfordert eine gewisse Anpassung der Wurzelansicht Ihres Layouts. Unter der Annahme, dass es LinearLayout als Wurzel hat, kann eine Implementierung aussehen:

     public class MyListItem extends LinearLayout implements Checkable { public MyListItem(Context context, AttributeSet attrs) { super(context, attrs); } public MyListItem(Context context) { super(context); } private boolean checked = false; private ImageView icon; @Override protected void onFinishInflate() { super.onFinishInflate(); icon = (ImageView)findViewById(R.id.img); // optimisation - you don't need to search for image view every time you want to reference it } @Override public boolean isChecked() { return checked; } @Override public void setChecked(boolean checked) { this.checked = checked; if (icon.getVisibility() == View.VISIBLE) { icon.setImageResource((checked) ? R.drawable.checked : R.drawable.unchecked); } } @Override public void toggle() { setChecked(!checked); } } 

    Ihre Layout-Datei sollte aktualisiert werden, um MyListItem-Klasse anstelle von LinearLayout auch zu verweisen, natürlich.

    Dies kann ein etwas schwieriger Ansatz sein, aber es hat Vorteile wie das Wiederherstellen des geprüften Elements automatisch, wenn die Aktivität neu erstellt wird.

    Eine weitere Möglichkeit besteht darin, den Auswahlmodus der Liste erneut zu verwenden und das getView des Adapters zu überschreiben, um zu wissen, ob das Element geprüft und das Bild entsprechend aktualisiert wird:

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final ListView list = getListView(); list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); list.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.title, text) { @Override public View getView(int position, View convertView, ViewGroup parent) { View v = super.getView(position, convertView, parent); ImageView icon = (ImageView) v.findViewById(R.id.img); if (list.isItemChecked(position)) { icon.setImageResource(R.drawable.checked); } else { icon.setImageResource(R.drawable.unchecked); } return v; } }); } 

    Allerdings hat diese Version einige Leistungsprobleme – findViewById und setImageResource sind relativ zeitaufwändige Operationen, so dass Sie erwägen sollten, einige Caching zu verwenden. Ich empfehle zu sehen "Die Welt von ListView" Video , um einige sehr nützliche Tipps über dieses Widget zu lernen.

    Der letztere Ansatz verbindet auch Adapter mit der Listenansicht, die eine unnötige Kopplung einführt.

    1. Setzen Sie den richtigen Wahlmodus in Ihrer Listenansicht. setChoiceMode nach dem, was du setChoiceMode
    2. Erstellen Sie eine Zeichenkette, um das gewünschte Bild zu verwenden.
    3. Setzen Sie Ihren Selektor als Hintergrund.

       android:background="@drawable/your_selector" 

      FYI:

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.