0
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.list_view_row,R.id.label,objects);

lv.setAdapter(adapter);

lvは であり、そのアダプタは(ラベル) とListViewを含む ListView の各行のカスタム ビューを保持します。TextViewToggleButton

https://www.dropbox.com/s/g3gkjct6rbpcgla/Screenshot_2013-02-13-20-00-47.png?m

ListView の各行で ToggleButton のリスナーを設定する方法は?

4

1 に答える 1

1

たとえば、カスタムアダプターの getView() メソッドでそれらを設定する必要があります

@Override
public View getView( int position, View convertView, ViewGroup parent ){

    ReportListItem listItem = getItem( position );
    TextView reportNameTextView;
    CheckBox isCheckedCheckBox;

    if( convertView == null ) {

        //creating convert view
        convertView = layoutInflater.inflate( R.layout.report_list_item_layout, null );

        //initializing views
        reportNameTextView = (TextView) convertView.findViewById( R.id.reportListItem_reportNameTextView );
        isCheckedCheckBox = (CheckBox) convertView.findViewById( R.id.reportListItem_isCheckedCheckBox );

        //setting tag for view
        convertView.setTag( new ReportListViewHolder( reportNameTextView, isCheckedCheckBox ) );

        //setting check box on click listener
        isCheckedCheckBox.setOnClickListener( new OnClickListener() {
            public void onClick(View v) {
                CheckBox cb = (CheckBox) v;
                ReportListItem item = (ReportListItem) cb.getTag();
                item.toggleChecked();
                cb.setChecked( item.isChecked() );
            }               
        });
    } else {
        //getting views from convertViewTag
        ReportListViewHolder viewHolder = (ReportListViewHolder) convertView.getTag();
        reportNameTextView = viewHolder.getReportNameTextView();
        isCheckedCheckBox = viewHolder.getIsCheckedCheckBox();
    }

    //setting tag for check box and use this tag in on click listener
    isCheckedCheckBox.setTag( listItem );

    //initializing row views
    isCheckedCheckBox.setChecked( listItem.isChecked() );
    reportNameTextView.setText( listItem.getReportName() );

    return convertView;
}
于 2013-02-13T14:42:07.417 に答える