0

我有一个使用定制的 ArrayAdapter 的列表视图。我的列表子项(single_row.xml)中有一个文本视图和一个切换按钮。我的切换按钮旨在将我的列表项标记/取消标记为收藏项。为了更新我的数据库(SQLite),我需要访问切换按钮旁边的相应文本视图。

我的问题是我不知道如何获取相应的文本视图。我不确定它们是如何相关的。

我希望这个问题很清楚。谢谢

4

1 回答 1

0

提高 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;
}
于 2012-12-18T19:43:15.547 回答