0

J'ai besoin d'aide dans ce problème, j'ai listview avec ligne contenant play/stop image et textView, si j'appuie sur le jeu jouer image son et changer l'icône pour arrêter l'image et inverser et si j'appuie sur la ligne elle-même faire les mêmes choses mais le problème est quand j'appuie sur la ligne l'image change c'est ok mais si j'appuie sur l'image elle-même de la rangée suivante change l'image dans la rangée sélectionnée mais n'inverse pas l'image je veux inverser à chaque clic sur l'image listview où je presse (ligne ou de l'image)Lecture/Arrêt Bouton dans la rangée à la listeVoir

enter code here  azkar = (ListView) findViewById(R.id.add_playlist_listView); 
     adapter = new SoundsAdapter(this, playlists,azkar); 
     adapter.setCustomButtonListner(SoundsActivity.this); 
     azkar.setAdapter(adapter); 
     int lastPosition =-1; 
     azkar.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      int pos; 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { 
       adapter.getView(position, view, parent); 
       try { 
        if (lastPosition != -1) { 
         View lastRow = azkar.getChildAt(lastPosition); 
         ImageView play = (ImageView) lastRow.findViewById(R.id.is_added); 
         play.setImageResource(R.drawable.play_background); 

         View currentRow = azkar.getChildAt(position); 
         ImageView stop = (ImageView) currentRow.findViewById(R.id.is_added); 
         stop.setImageResource(R.drawable.stop_background); 
        } 
        lastPosition = position; 
       } catch (Exception e) { 
       } 
       final HashMap<String, String> committee = playlists.get(position); 
       String fileName = committee.get(CategoriesActivity.KEY_PATH); 
       run(committee.get(CategoriesActivity.KEY_PATH), view, position); 
      } 
     }); 

enter code here 
@Override 
public void onButtonClickListner(int position,View view,ViewGroup parent) { 
    Toast.makeText(getApplicationContext(), "aaaaaaa", Toast.LENGTH_LONG).show(); 
    final int pos = position; 
    adapter.getView(position, view, parent); 
    try { 
     if (last != -1) { 
      View currentRow = azkar.getChildAt(position); 
      ImageView stop = (ImageView) currentRow.findViewById(R.id.is_added); 
      stop.setImageResource(R.drawable.stop_background); 

      View lastRow = azkar.getChildAt(last); 
      ImageView play = (ImageView) lastRow.findViewById(R.id.is_added); 
      play.setImageResource(R.drawable.play_background); 

     } else { 
      View currentRow = azkar.getChildAt(position); 
      ImageView stop = (ImageView) currentRow.findViewById(R.id.is_added); 
      stop.setImageResource(R.drawable.stop_background); 

     } 
     last = position; 
    }catch (Exception e){} 
    final HashMap<String, String> committee = playlists.get(position); 
    String fileName = committee.get(CategoriesActivity.KEY_PATH); 
    run(fileName, view, position); 

}

enter code here   //code in adapter 
    thumb_image.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
       if (customListner != null) { 
       customListner.onButtonClickListner(position, convertView, parent); 
     } 
     } 
    }); 
    return vi; 
} 
public interface customButtonListener { 
    public void onButtonClickListner(int position,View view,ViewGroup parent); 
} 

public void setCustomButtonListner(customButtonListener listener) { 
    this.customListner = listener; 
} 

enter image description here

enter image description here

+0

Pouvez-vous poster le code que vous utilisez pour ce problème? –

+0

avant d'appuyer sur chaque ligne notifier l'adaptateur que l'ensemble de données a changé comme ceci: notifyDataSetChanged(): – santoXme

+0

Pouvez-vous s'il vous plaît montrer votre code –

Répondre

0

changements attendus Essayez et essayer de personnaliser en fonction de vos besoins. J'ai 5 articles dans listview. et le listView.setOnItemClickListener fonctionne bien. Son changement de la seule position sur laquelle vous cliquez et reposez les vues sera automatiquement mis à jour. Je ne peux pas faire plus loin.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long l) { 
      View v; 
      int count =5; //parent.getChildCount(); 
      v = parent.getChildAt(position); 
      parent.requestChildFocus(v, view); 
      ImageView imageView = (ImageView) v.findViewById(R.id.buttonPlayPause); 
      imageView.setImageResource(android.R.drawable.ic_media_pause); 
      int i=0; 
      while (i < count) { 
       if (i != position) { 
        v = parent.getChildAt(i); 
        ImageView imageView1 = (ImageView) v.findViewById(R.id.buttonPlayPause); 
        imageView1.setImageResource(android.R.drawable.ic_media_play); 

       } 
       i++; 
      } 

     } 
    });