1

各リスト項目にボタンがある listView があります。リストアイテムとボタンの両方に onClickListener を設定したい - どちらかしかできないのではないかと心配している..

アダプターのコードは次のとおりです。

private class MyListAdapter extends ResourceCursorAdapter { 

    // In your ListActivity class, create a new inner class that extends ResourceCursorAdapter. 
    //This inner class is the custom CursorAdapter we will use to manage how data is bound to a list item:

    public MyListAdapter(Context context, Cursor cursor) { 
        super(context, R.layout.row_location, cursor);
    } 

    @Override
    public void bindView(View view, Context context, Cursor cursor) { 
        TextView text_first_line = (TextView) view.findViewById(R.id.location_row_item_main_text);
        TextView text_second_line = (TextView) view.findViewById(R.id.location_row_item_secondary_text);
        ImageView flagIcon = (ImageView) view.findViewById(R.id.flagIcon);

        String row_text_component = cursor.getString(cursor.getColumnIndex(RMDbAdapter.COMPONENT));
        String row_text_position = ", Position " + cursor.getString(cursor.getColumnIndex(RMDbAdapter.POSITION));
        if(row_text_position.equals(", Position Not Applicable")){
            row_text_position = "";
        }
        String row_text_action = " - " + cursor.getString(cursor.getColumnIndex(RMDbAdapter.ACTION_REQUIRED));

        text_first_line.setText(row_text_component + row_text_position + row_text_action);
        text_second_line.setText("test text, test text");

        String risk = cursor.getString(cursor.getColumnIndex(RMDbAdapter.RISK));
        if (risk.equals("Red Risk")){
            flagIcon.setImageResource(R.drawable.red_flag);
        }
        else if (risk.equals("Green Risk")){
            flagIcon.setImageResource(R.drawable.green_flag);
        }
        else if (risk.equals("No Risk")){
            flagIcon.setImageResource(R.drawable.note);
        }

    }
}

以前のより単純なアクティビティでは、リスト項目に onListItemClick を設定しましたが、ボタンのリスナーを設定するにはどうすればよいでしょうか??

大変助かりました!

4

1 に答える 1

0

ListView 行には複数のリスナーを含めることができます。通常のように OnClickListener を設定するだけです。

button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        // Do something
    }
});

これは、問題のボタンに触れたときにのみ OnListItemClick リスナーに取って代わります。

また、Android の Romain Guyディスカッション アダプターと効率性もご覧ください。

于 2012-10-23T20:55:20.273 に答える