Impostazione delle risorse di image ottenendo la posizione del tag per un android dell'image

Sto facendo uso della vista del riciclatore. Ho un layout che è evidenziato in rosso chiaro, questo layout è incluso per each elemento nella vista del riciclatore. Il layout rosso chiaro è posto sull'image di background. Sto utilizzando il metodo setTag per identificare i clic dei pulsanti nel layout rosso. Che funziona correttamente quando faccio clic su come get la posizione. Il problema è che voglio cambiare l'image in una posizione specifica. Ad esempio: consideri il button del cuore. Ho impostato un tag su di esso come questo.

heartButton = findViewById (id); heartButton.setTag (posizione);

  • Come analizzare i dati da due URL diversi con il metodo asyncTask
  • Come avviare un'applicazione Android dalla row di command?
  • Caricare il file html locale in webView android
  • Transizioni di design di materiale Android
  • Sostituisci le stringhe di Android
  • Messaggio centrale nella window di dialogo android
  • ora ho la posizione utilizzando il metodo getTag. Ma adesso vorrei cambiare l'image del heartButton in una posizione specifica. C'è qualcosa di simile

    heartButton.getTag (posizione) .setImageResouce (drawable);

    Se no, come posso fare allora.

    Immagine

  • Servizio v / s AsyncTask
  • Comando di repo Android e rami di commutazione
  • come impostare valori per xlabels e ylabels in mpandroidchart
  • Perché bloccare glClear in OpenGLES?
  • Android - Visualizzazione dei contatti della rubrica e selezione di uno
  • android: Come get la posizione di text dall'evento touch
  • 3 Solutions collect form web for “Impostazione delle risorse di image ottenendo la posizione del tag per un android dell'image”

    Il modo corretto per farlo è, è necessario mantenere lo stato del button di cuore memorizzato nel model (POJO) che viene passato alla scheda personalizzata. per esempio

     class ModelListItem{ public static final int HEART=1,BROKEN_HEART=2; int heartButtonState; } 

    Ora in onClick () del button di cuore, ottieni l'object dall'adattatore utilizzando la posizione, considerando che hai già capito come conservare la posizione dal button di cuore

     ModelListItem item = (ModelListItem)adapter.getItem(position) 

    Cambiare lo stato del button del cuore;

     item.setHeartButtonState(ModelListItem.BROKEN_HEART); adapter.notifyDatasetChanged(); 

    Sai già di seguito spiegazioni, ma solo nel caso in cui funziona correttamente, nel metodo getView di adattatore devi inserire il controllo su heartButtonState (); e utilizzare la risorsa di image appropriata.

     getView(BOILERPLATE){ BOILERPLATE switch(item.getheartButtonState()){ case ModelItemList.HEART: heartbutton.setImageResource(heart_image); break; case ModelItemList.BROKEN_HEART: heartbutton.setImageResource(broken_heart_image); break; } 

    Ho fatto un ascoltatore di click personalizzato e aggiornato come nel setter getter.But questo funziona solo quando la vista è stata spostata dalla visualizzazione (credo che sia lo scrapbook)

    La class Setter Getter

     public class DemoData { int background; boolean liked; public DemoData(int background) { this.background = background; } public int getBackground() { return background; } // public void setBackground(int background) { // this.background = background; // } public boolean isLiked() { return liked; } public void setLiked(boolean liked) { this.liked = liked; } } 

    La function onBindViewHolder della vista del riciclatore

     @Override public void onBindViewHolder(ViewHolder holder, int position) { background = (ImageView) holder.view.findViewById(R.id.image); layout = (LinearLayout) holder.view.findViewById(R.id.layout); delete = (ImageView) layout.findViewById(R.id.delete); lock = (ImageView) layout.findViewById(R.id.lock); delete.setTag("delete_"+position); lock.setTag("lock_"+position); if(Constants.demoDatas.get(position).isLiked()){ delete.setImageResource(R.drawable.ic_launcher); } else{ delete.setImageResource(android.R.drawable.ic_delete); } delete.setOnClickListener(new CustomClickListener(position)); lock.setOnClickListener(new CustomClickListener(position)); } 

    L'ascoltatore di click personalizzato è come di seguito

     public class CustomClickListener implements View.OnClickListener { int position; public CustomClickListener(int position) { this.position = position; } @Override public void onClick(View v) { String tag = (String) v.getTag(); String identifier[] = tag.split("_"); // this line saves my state in the Setter Getter Class Constants.demoDatas.get(position).setLiked(true); } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.