从listview中包含所述togglebuttons的listview中获取特定togglebutton的语法是什么?
我想在onCreate方法中启动每个togglebutton的状态(基于源自数据库的一些值)。我在循环中有以下代码,但我不知道如何更改它以从listview引用特定的togglebutton。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mydb = new DBHelper(this);
ArrayList array_list = mydb.getAllAlarms();
for(int i = 0; i < array_list.size(); i++) {
arrayListItem = array_list.get(i).toString();
activationInt = Integer.parseInt(arrayListItem);
LayoutInflater vi = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.listview_row, null);
alarm_activated = (ToggleButton) view.findViewById(R.id.alarm_activated);
if (activationInt == 1) {
alarm_activated.setChecked(true);
alarm_activated.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.MULTIPLY);
} else {
alarm_activated.setChecked(false);
}
}
ArrayAdapter arrayAdapter =
new ArrayAdapter(this, listview_row,R.id.alarm_name,array_list);
obj = (ListView)findViewById(R.id.listViewAlarms);
obj.setAdapter(arrayAdapter);
obj.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
String itemVal =(String) arg0.getItemAtPosition(arg2);
Bundle dataBundle = new Bundle();
dataBundle.putString("name", itemVal);
Intent intent = new
Intent(getApplicationContext(),DisplayAlarm.class);
intent.putExtras(dataBundle);
startActivity(intent);
}
});
谢谢。
约瑟夫
答案 0 :(得分:2)
不应该以这种方式真正更新ListView / RecyclerView的视图。
首先,因为ListView中引用的子视图不代表行的总体,而只代表某一行的可见行。
ListView将其项目视图绑定到DataSet值,因此您最好使用包含&#34;已检查&#34;的数据对象。布尔状态,然后当您需要同步时,更新您的DataSet和notifyDataSetChange您的适配器。
因此,您必须按照以下示例创建自定义适配器:Custom Adapter for List View