2011-06-27 19 views
1

私は2つのアクティビティを持つタスクの管理を可能にするアプリケーションを開発しています。最初のアクティビティは単純なリストビューで、ユーザーのリストが表示されます。 2番目のアクティビティは、そのユーザーに関連付けられたタスクを表示する複数選択リストビューです。共有環境設定を使って、チェックボックスの状態を保存するという私の最初の目標に到達できました。私の問題は、ユーザーのチェックボックスの状態を保存すると、別のユーザーのタスクが表示されてもチェックされなくなることです。 どうすれば問題を解決できますか?共有設定複数選択リストビュー

これは私がリストを埋める方法です:

 mList.setOnItemClickListener(new OnItemClickListener() {  
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
      final String text = (String) mList.getItemAtPosition(position); 
     } 
    }); 

そして、これは、保存するために私が使用する方法である:

mList = (ListView) findViewById(android.R.id.list);  
    final DbAdapter db = new DbAdapter(this); 
    db.open(); 
    data = db.getAllTasks(getIntent().getExtras().get("nameUser").toString()); 
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,data); 
    mList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    mList.setAdapter(adapter); 

これは私がタスクを表示したいユーザーを選択方法ですSharedPreferencesを使用する状態:

private void LoadSelections() { 
    // if the selections were previously saved load them 

    SharedPreferences settingsActivity = getPreferences(MODE_PRIVATE); 

    if (settingsActivity.contains(SETTING_DB)) { 
     String savedItems = settingsActivity 
       .getString(SETTING_DB, ""); 

     this.selectedItems.addAll(Arrays.asList(savedItems.split(","))); 
     int count = this.mList.getAdapter().getCount(); 

     for (int i = 0; i < count; i++) { 
      String currentItem = (String) this.mList.getAdapter() 
        .getItem(i); 
      if (this.selectedItems.contains(currentItem)) { 
       this.mList.setItemChecked(i, true); 
      } 

     } 

    } 
} 


private void SaveSelections() { 

    // save the selections in the shared preference in private mode for the user 

    SharedPreferences settingsActivity = getPreferences(MODE_PRIVATE); 
    SharedPreferences.Editor prefEditor = settingsActivity.edit(); 

    String savedItems = getSavedItems(); 

    prefEditor.putString(SETTING_DB , savedItems); 

    prefEditor.commit(); 
} 



private String getSavedItems() { 
    String savedItems = ""; 

    int count = this.mList.getAdapter().getCount(); 

    for (int i = 0; i < count; i++) { 

     if (this.mList.isItemChecked(i)) { 
      if (savedItems.length() > 0) { 
       savedItems += "," + this.mList.getItemAtPosition(i); 
      } else { 
       savedItems += this.mList.getItemAtPosition(i); 
      } 
     } 

    } 
    return savedItems; 
} 

答えて

2

あなたの環境設定の一部として、それらの特定のタスクが関連付けられているユーザーを含める必要があります。この目的のためにSharredPreferrencesを使用するのは理想的ではありませんが(単にIMOの代わりにデータベースを使用する方が良い)、最終的には選択したアイテムを特定のユーザーに見つける必要があります。ユーザーが選択されると、選択された場所。

+0

hi。私はちょうど私が何をしたか説明するためにいくつかのコードを追加しました – unnamed