2017-10-01 24 views
1

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

答えて

1

あなたはSimpleCursorAdapterを拡張するカスタムアダプタを作成し、getViewメソッドをオーバーライドして、そこから子要素の参照を取得し、その後、SimpleCursorAdapterの代わりにそれを使用する必要があります。

+0

ありがとうナビン!それは理にかなっている。 – JF0001

関連する問題