2017-03-12 7 views
0

私はこの質問に対してここで私の答えを見つけることはできませんが、私はデータベースからListViewというアクティビティを持っています。更新された変数でリフレッシュするアクティビティ

String ascOrDescFilter = " ASC"; 
String columnFilter = "amount"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    helper = new DatabaseHelper(this); 
    dbList= new ArrayList<DatabaseModel>(); 
    dbList = helper.getDataFromFilteredDB(columnFilter, ascOrDescFilter);` 

私は、ユーザーがコンテキストメニューに変更することができ、更新変数に入れながら、私の活動をリフレッシュしたいです。

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
     case R.id.schedule: 
      columnFilter="spare1"; 
      ascOrDescFilter= " ASC"; 
      //dbList = helper.getDataFromFilteredDB("spare1", " ASC"); 
      onRestart(); 
      return true; 
     case R.id.amount: 
      columnFilter="spare1"; 
      ascOrDescFilter= " ASC"; 
      //dbList = helper.getDataFromFilteredDB("balance", " DESC");; 
      return true; 
     default: 
      return super.onContextItemSelected(item); 
    } 
} 

私はonRestartまたはonResumeを呼び出す必要があると思いますか?私は自分の活動のためにこれらを実装する方法がわかりません。私は意図が必要ですか?上記のプログラムからわかるように、私はonStartメソッド(とonResume + onRecreate)で試しましたが、何も私のListviewをリフレッシュすることはありません。

@Override 
public void onRestart() 
{ 
    super.onRestart(); 
    startActivity(getIntent()); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
} 

//@Override 
protected void onRecreate() { 
    super.onResume(); 
    this.onCreate(null); 
} 

ありがとう、どのポインタが最も役立つでしょう。これは自分で開発した初めてのアプリです。

+0

アクティビティを再起動する必要はありません。リストビューを更新するだけです。あなたのコードのコメント部分のように。それは動作しますか?そうでない場合は、なぜですか? –

答えて

0

ListViewでアダプタを使用するだけで、データを変更するときにはリスト内のデータを更新してadapter.notifyDataSetChanged()を呼び出してください。

独自のアダプタを作成する場合は、BaseAdapterから拡張します。それ以外の場合は、ArrayAdapterを使用するのが最も簡単です。

+0

ありがとう、notifyDataSetChanged()は私にとっては完全に機能しませんでしたが、これを正解とマークしました。私は仕事をしたいと思っているが、コードを調べて正確に何が起こっているか把握しなければならない。私は木曜日以来、これに困惑していたので、本当に両方の回答が役に立ちました。 @SchokokuchenBäcker私は間違っていたことを試してみるためにコードを使いこなしていましたが、値が一致しないことはわかっていますが、notifyDataSetChangedが実装されていればそのコードが機能していたはずです。私はonResumeまたはonRestartが私の解決策であると考えていたので、どちらも正しい方向に向いてくれてありがとう。 – MarkC

+0

心配はいりません。お役に立てて嬉しいです! –

関連する問題