0

これは、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;
}}

クリッカーを実装しようとしましたが、たくさんのエラーしか表示されません。多くのチュートリアルや同様の質問を読みましたが、どの回答も私の状況に合わないか、よく理解していません。どんな助けでも大歓迎です!

4

2 に答える 2

0

問題はボタンに焦点を当てています。各行のボタンの代わりに他のビュー(ImageViewなど)を使用し、onItemClickListenerをlistViewに設定する必要があります

于 2012-04-05T20:28:43.437 に答える
0

ListView は実際にはクリック可能なコントロールを持つように設定されていません。onClick() メソッドは行の代わりに touchEvent を消費します。ただし、この例のように、ボタンまたはその他のクリック可能な要素に対して XML でカスタム コールバックを指定する回避策があります。

于 2012-04-05T20:27:46.633 に答える