提高listView性能的一種建議方法是在getView()方法中使用ViewHolder。此ViewHolder對象通常使用setTag()方法附加到視圖,以便能夠檢索行中的所有視圖,例如onClick(View)偵聽器方法。
在你的情況下,你可以使用相同的方法,但在ToggleButton中,要附加一個包含該行重要信息的對象。然後,在onCheckedChangedListener中,您將收到已按下的ToggleButton,並使用getTag()方法可以獲取先前存儲的對象以及更新數據庫所需的所有信息。這樣的事情:
public View getView(int position, View convertView, ViewGroup parent) {
//Other stuff here
ToggleButton tb = (ToggleButton)row.findViewById(R.id.toggle_button);
//Attach to the toggle button whatever object you need
tb.setTag("Put an object here");
tb.setOnCheckedChangedListener(new OnCheckedChangedListener(){
@Override
public void onCheckedChanged(CompoundButton button, boolean isChecked){
Object relatedData = button.getTag();
//Update the database with the relatedData
}
});
//Other stuff
return row;
}
訪問'TextView'在哪裏?在'Button'的'OnCheckedChangeListener'中? – Luksprog