2016-08-05 9 views
0

Ich habe Button auf Elemente in meiner Liste Adapter. Das Problem tritt auf, wenn ich auf die Schaltfläche klicke. Die Aktion wird für das richtige Element ausgeführt, deaktiviert jedoch die falsche Schaltfläche. Mein Code:Schaltfläche auf ListAdapter

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = 
       (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.item_friend, parent, false); 

     user = userList.get(position); 


     ImageView imageView = (ImageView)view.findViewById(R.id.user_image); 

Picasso.with(JSONUserAdapter.this.getContext()).load("https://s3.amazonaws.com/profiles-pictures/"+ user.getPath()).into(imageView); 


     sendRequest = (ImageButton)view.findViewById(R.id.sendRequest); 


     sendRequest.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       sendFriendRequest(); 
       disabledAdd(); 

      } 
     }); 

     return view; 
    } 
+0

user = userlist. bekommen (Position); Machen Sie dieses gültige lokale Finale. –

Antwort

0

versuchen Sie nicht in den Reihen von ListView für die Schaltflächen klicken Ereignisse zu fangen. Jede Reihe von ListView ist bereits anklickbar. Stellen Sie die onItemClickListener für die ListView:

listview.setOnItemClickListener(new OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View v, int position, long l) { 
      //DO SOMETHING HERE 
      //Use "position" to get the index of item clicked 
    } 
}); 
+0

Sofern Sie keine separate Funktionalität für Listenelemente wünschen, klicken Sie auf. – nukeforum

0

ich sehen kann, dass wir die „User“ Objekt als globel Variable definiert hatte, und es werden die letzten postions Positionsdaten speichern.

Wenn Sie also auf eine Schaltfläche klicken, werden die Daten der letzten Elemente wiedergegeben.

{UserType}Object user = userList.get(position); 
0

Sie können Tag setzen auf View

Verwendung wie folgt aus:

sendRequest.setTag(user); 

Und wenn Benutzer klickt gets Datenelement lassen von Tag wie diesem

sendRequest.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // Here you have user that was clicked. 
       User user = v.getTag(); 
       sendFriendRequest(); 
       disabledAdd(); 

      } 
}); 
Verwandte Themen