SimpleCursorAdapterを使用してListViewを生成しています。私はsqliteデータベースから次の2つの値を取得しています:nameとactivated。私の行リストビューには、alarm_activatedという名前のToggleButtonがあります。 onCreateLoader()メソッドでは、データベースの値が1のときにsetChecked()をtrueに設定します。それ以外の場合は、setChecked値をfalseに設定します。さらに、同じonCreateLoader()メソッドでToggleButtonの背景色を変更したいと思います。私は正しく動作している値を取得するための次のコードを開発しました。onCreateLoader()メソッドのListView Objetsのプロパティの設定
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mydb = new DBHelper(this);
Cursor cursor = getContentResolver().query(CONTENT_URI, null, null, null, "name, activated");
alarmlv = (ListView)findViewById(R.id.listViewAlarms);
dataAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.listview_row, cursor,
new String[]{ mydb.ALARMS_COLUMN_NAME, mydb.ALARMS_ACTIVATED }, new int[]{ R.id.alarm_name, R.id.alarm_activated}, 0);
alarmlv.setAdapter(dataAdapter);
getSupportLoaderManager().initLoader(0, null, this);
}
一方で、私は上記のようにそのプロパティを設定するために、行のビューでトグルボタンを参照する難しさを持っています。ここに私の開始コードがあります:
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
alarm_activated = (ToggleButton)row.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);
}
alarm_activated.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
buttonView.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.MULTIPLY);
} else {
buttonView.getBackground().setColorFilter(Color.LTGRAY, PorterDuff.Mode.MULTIPLY);
}
}
});
return new Loader(this);
}
ありがとうございました。
J
ありがとうナビン!それは理にかなっている。 – JF0001