2013-02-13 2 views
0
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.list_view_row,R.id.label,objects); 

lv.setAdapter(adapter); 

lv является ListView и его адаптер имеет выполненный на заказ View для каждой строки ListView, который содержит TextView (ярлык) и ToggleButton.Пользовательского вид для строки в ListView с Кнопкой переключения

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

Как установить Приёмники для ToggleButton в каждой строке ListView?

ответ

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; 
} 
Смежные вопросы