2011-12-24 16 views
2

私のメインページのために、refesh関数を作成しようとしています。私は多くのサイトを検索しましたが、(私のために)アクセシブルな慣用句を見つけることができないようです。私はsQLLiteデータベースから情報をロードしています。私が私の追加活動を使用し、私が追加した項目が現れないMainScreen活動に戻るとき。活動が再開されると、このデータをどのように更新することができますか?Android:リフレッシュ時にArrayAdapterをリフレッシュ

事前にお問い合わせください。私は

 public ListView whiskeylist; 
String[] DataArryWhiskey; 
ListAdapter Adapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Start db view of whiskey 
    DBConfig info = new DBConfig(this); 

    info.open(); 
     DataArryWhiskey = info.getDataInArray(); 
    info.close(); 


    whiskeylist = (ListView) findViewById(R.id.listofWhiskey); 
    Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, DataArryWhiskey); 
    whiskeylist.setAdapter(Adapter); 

    // End db view of whiskey 


}// end onCreate 

@Override 
public void onResume() 
{ 
    super.onResume(); 
    DBConfig info = new DBConfig(this); 

    info.open(); 
     DataArryWhiskey = info.getDataInArray(); 
    info.close(); 
    Adapter.notifyDataSetChanged(); // refresh adapter  
} 

にコードを変更アディルの助言に

 public ListView whiskeylist; 
     String[] DataArryWhiskey; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Start db view of whiskey 
    DBConfig info = new DBConfig(this); 

    info.open(); 
     DataArryWhiskey = info.getDataInArray(); 
    info.close(); 


    whiskeylist = (ListView) findViewById(R.id.listofWhiskey); 
    whiskeylist.setOnItemClickListener(this); 
    whiskeylist.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, DataArryWhiskey)); 


}// end onCreate 

しかし、私は<「notifyDataSetChangedがタイプListAdapterには未定義である方法を」notifyDataSetChanged上のエラーを取得します - ListAdapterを変更することで、それを修正ArrayAdapterには、アプリはまだクラッシュします。

答えて

1

//あなたのOnCreateの方法で変更を加えを使用する

Here is a tutorialその 別のアクティビティで追加したフィールドもデータベースに保存されます。 onActivityResultメソッドからやonResumeから コールショーのデータを()()

private void showData() 
{ 
    info.open(); 
    DataArryWhiskey = info.getDataInArray(); 
info.close(); 
whiskeylist.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, DataArryWhiskey)); 
} 
+0

をどこで呼びますか? – user1114720

+0

1つの質問、追加アクティビティをどのように開始しますか? startActivityForResultを使用してActivtyを追加する場合は、2つのステップがあります。 1)onActivityResultメソッドからshowData()を呼び出す 2)またはこのメソッドをonResume()から呼び出します。 – AAnkit

+0

別のアダプタを設定するのは悪い方法です。古いアダプタをリフレッシュする必要があります。 –

1

ArrayAdapter adapter;のクラスレベルの変数を取得し、この方法のように、それを初期化します。

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, DataArryWhiskey); 
hiskeylist.setAdapter(adapter); 

と内部onResume()この方法のように行います。

public void onResume() 
{ 
    super.onResume(); 
    info.open(); 
    DataArryWhiskey = info.getDataInArray(); 
    info.close(); 
    adapter.notifyDataSetChanged(); // refresh adapter  
} 

マイ推奨: あなたがデータベースから値を取得しているためには、SimpleCursorAdapter代わりのArrayAdapterを使用しています。それはあなたのためにも他の多くの仕事をします。 )(ActivityResult上からこのメソッドを呼び出して、以下与えるが、それを行う前に確認してくださいどのように

DBConfig info; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
// TODO Auto-generated method stub 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

// Start db view of whiskey 
info = new DBConfig(this); 
whiskeylist = (ListView) findViewById(R.id.listofWhiskey); 
whiskeylist.setOnItemClickListener(this); 
}// end onCreate 

別の方法下記参照、SimpleCursorAdapter

+0

私はアダプタworkoingを得ることができないようです – user1114720

+0

notifyDataSetChangedでエラーが発生しました。 "notifyDataSetChangedはListAdapter型のために未定義です"コードの元の質問 – user1114720

1

あなたがアイテムを追加する前にadapter.clear();を使用して試すことができます。

関連する問題