2013-03-15 17 views
1

我寫一個代碼,其中,我從non-Activity類創建動態Checkboxes與其ActionListener變化從內側CompoundButton.OnCheckedChangeListener()使用非活性的類

現在我想從CompoundButton.OnCheckedChangeListener()更改一些用戶界面。

每個checkbox代表一個警報。在Database中,每個警報都設置爲column,指定是啓用還是禁用警報,我需要訪問數據庫才能執行此操作。我正在寫下面的代碼:

public class DataBaseAdapter extends SQLiteOpenHelper 
{ 
    .... 
    .... //onCreate, onUpdate, other methods used. 
    .... 
public TableLayout getAllAlarmList(Context con) 
{ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    for(int i=0;i<maxCount;i++) //maxCount number of rows in database 
    { 
     check[i]= new CheckBox(con); 
     check[i].setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 
     { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
      { 
       if(isChecked) 
       { 

       } 
       else 
       { 

       } 
      } 
     }); 
    } 

} 

現在我需要在這裏添加代碼,使我可以添加數據庫訪問代碼。怎麼做。?

+0

先試一下。 – njzk2 2013-03-15 08:57:21

+0

我沒有得到任何想法......如何開始它...... – 2013-03-15 08:59:09

+0

你不應該在你的SQLiteHelper類中創建複選框,這是你的Activity的責任。您應該聽取那裏的CheckBoxes的更改,並且在Activity中您應該創建一個DataBaseAdapter對象,通過它可以根據用戶交互來更改表格。 – 2013-03-15 09:01:28

回答

0

我不能這樣做。由於Android的限制,Android使UI變得安全。所以它不允許除Activity Class以外的任何線程或類在用戶界面中進行更改。

所以我做的最好的是收集所有警報(數據)作出Array並將數組發回Activity類的調用方法,並在此列出此列表。

相關問題