我有一个使用costumized ArrayAdapter的listview。我在list list(single_row.xml)中有一个textview和一个togglebutton。我的切换按钮用于标记/取消标记我的列表项作为收藏夹。为了更新我的数据库(SQLite),我需要访问togglebutton旁边的相应textview。
我的问题是我不知道如何获得相应的textview。我不确定它们是如何相关的。
我希望问题很清楚。 感谢
答案 0 :(得分:0)
提高listView性能的一种推荐方法是在ViewHolder方法中使用getView()。此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;
}