簡體   English   中英

如何為綁定到自定義適配器的 ListView 設置 onClickListener?

[英]How do I set up onClickListener for ListView binded to custom adapter?

這是 class 我想在以下位置實現 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;
}}

我試過實現答題器,但我得到的只是一堆錯誤。 我已經閱讀了很多教程和類似的問題,但似乎沒有一個答案適合我的情況,或者我不太理解它們。 任何幫助將非常感激!

ListView 並沒有真正設置為在其中包含可點擊的控件,onClick() 方法使用 touchEvent 而不是行。 不過有一個解決方法,您可以在 XML 中為您的按鈕或其他可點擊元素指定一個自定義回調,如本例所示

問題出在按鈕的焦點上。您應該在每一行中使用其他視圖而不是按鈕(例如 ImageView)並將 onItemClickListener 設置為您的 listView

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM