2016-08-05 50 views
0

我有我的列表适配器中的项目按钮。当我点击按钮时会出现问题。该操作在正确的项目上执行,但它禁用了错误的按钮。 我的代码: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

用户=用户列表。得到(位置);进行这个可变的本地决赛。 –

回答

0

不要试图抓住点击事件的ListView行内的按钮。 ListView的每行已经可以点击。设置onItemClickListenerListView

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

除非您想单击​​列表项目上的单独功能。 – nukeforum

0

,我可以看到,我们所定义的“用户”对象作为globel变量,它将存储的最后志愿服务岗位项数据。

所以当你点击任何按钮时,最后的项目数据将被反映出来。

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

您可以在View

使用设置标签这样的:

sendRequest.setTag(user); 

而且当用户点击项目让我们从标签中获取数据这样

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

      } 
});