2017-10-01 6 views
1

SimpleCursorAdapter를 사용하여 ListView를 채우고 있습니다. 나는 sqlite 데이터베이스에서 다음 두 값을 검색하고있다 : name과 activated. 내 Row ListView에는 alarm_activated라는 ToggleButton이 있습니다. onCreateLoader() 메서드에서 데이터베이스의 값이 1 일 때 setChecked()를 true로 설정하고 그렇지 않으면 false로 setChecked 값을 설정하려고합니다. 또한 동일한 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); 

} 

한편, I는 전술 한 바와 같이 자신의 속성을 설정하기 위해 행보기에서 ToggleButtons를 참조 어려움을 겪고 있어요. 내 시작 코드는 다음과 같습니다.

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); 
} 

감사합니다.

당신은 SimpleCursorAdapter을 확장하는 사용자 정의 어댑터를 작성하고 getView 메소드를 오버라이드 (override) 한 후, SimpleCursorAdapter 대신 사용하고 거기에서 자식 요소의 참조를 얻어야한다

답변

1

J.

+0

고맙습니다. 그건 의미가 있습니다. – JF0001