2012-04-05 51 views
0

这就是我要实现的onClickListener在类:如何为绑定到自定义适配器的ListView设置onClickListener?

private void updateUserListView(DatabaseHandler dbh) { 
    List<User> users = dbh.getAllUsers(); 
    ListView listView = (ListView) findViewById(R.id.userslistview); 
    listView.setAdapter(new UserArrayAdapter(BeerFriendActivity.this, users));  
} 

适配器代码:

public class UserArrayAdapter extends ArrayAdapter<User> { 
private final Context context; 
private final List<User> values; 

public UserArrayAdapter(Context context, List<User> values) { 
    super(context, R.layout.userrow, values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final int pos = position; 
    final Context con = context; 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.userrow, parent, false); 
    Button button = (Button) rowView.findViewById(R.id.userrowbutton); 
    TextView textView = (TextView) rowView.findViewById(R.id.userrownametext); 
    textView.setText(values.get(position).getName()); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent myIntent = new Intent(context,BeerSearchActivity.class); 
      Bundle b = new Bundle(); 
      b.putInt("id", values.get(pos).getId()); 
      myIntent.putExtras(b); //Put your id to your next Intent 
      con.startActivity(myIntent); 
     } 
    }); 

    User user = values.get(position); 
    return rowView; 
}} 

我曾尝试实施唱首歌,但我得到的是一堆错误。我已经阅读了许多教程和类似的问题,但没有一个答案似乎适合我的情况,或者我不完全理解它们。任何帮助将非常感激!

+0

是否有你想要的每一行,而不是在一个按钮理由使每行可点击? – JRaymond 2012-04-05 20:19:57

+0

我需要这两件事情发生。每行中的按钮都可以工作,但我也需要ListView行可点击。 ListView行点击方法是我无法工作的。 – user1316202 2012-04-05 20:21:22

回答

0

ListView并未真正设置为在其中具有可点击的控件,onClick()方法使用touchEvent而不是该行。尽管有一种解决方法,您可以在XML中为您的按钮或其他可点击元素指定自定义回调,如this example

+0

我应该考虑改变它吗?这听起来像一个列表视图内的按钮不是正确的方法来做到这一点? – user1316202 2012-04-05 20:50:29

+0

也许......我只是使用该方法来收藏。你想用onItemClick与点击按钮做什么? – JRaymond 2012-04-05 20:52:15

+0

我有一个主要活动的2个列表视图。我需要底部列表视图基于第一个列表视图中选择的内容。还必须有一个按钮或者一个长按可以在第一个列表视图的每一行上执行不同的操作。 – user1316202 2012-04-05 20:59:19

0

的问题是在button.You的重点应改用其他浏览,而不是按钮,每一行(ImageView的为例)并设置onItemClickListener到你的ListView

+0

我应该考虑改变它吗?这听起来像一个列表视图内的按钮不是正确的方法来做到这一点? – user1316202 2012-04-05 20:50:06

+0

@ user1316202是的,按钮里面的listview防止rowclicking。但是你可以将onClickListener设置为任何视图,因此可以将按钮重新设置为imageView帮助我 – 2012-04-05 20:55:23

相关问题