2011-07-25 8 views
0

BaseAdapterからデータセットを取得するListViewがあります。 ListViewは、menuItemがクリックされたときにデータを受け取ります。 私のlistViewまたは私のListAdapter(inboxAdapter.notifyDataSetChanged())に通知することができません。それは動作しません。 他の方法。データセット受信時にListViewに通知する

case R.id.Get: 
    retrieveList(); 
    inboxEmails = EmailElement.parseContent(); 
    inboxAdapter = new nboxAdapter(getApplicationContext(),inboxEmails); 
    if(inboxAdapter !=null){ 
    listView.setAdapter(inboxAdapter); 
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    inboxAdapter.notifyDataSetChanged(); 
    } 
break; 

//私は、まずメニューをクリックしたときに、私は今のところ、私のリストビューを更新するか、または通知する必要が放送からのメッセージに基づいて、SMS

private void retrieveList(){ 
    registerReceiver(new SMSSentReciever(), new IntentFilter(SMSInfo.SENT)); 
    registerReceiver(new SMSDeliveredReciever(), new IntentFilter(SMSInfo.DELIVERED)); 
    PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent(SMSInfo.SENT), 0); 
    PendingIntent deliveryIntent = PendingIntent.getBroadcast(this, 0, new Intent(SMSInfo.DELIVERED),0); 
    SmsManager.getDefault().sendTextMessage("5556",null, "fruits", sentIntent, deliveryIntent); 

}

を送信することにより、このメソッドはretrieveList私はエミュレータで私のメッセージを取得し、私は上記のメッセージを送信トーストが表示されますが、リストビューではなく、もう一度メニューをクリックすると、私はついにリストビューを取得します。私は間違って何をしたのですか?

+0

最初にデータが更新されているかどうかを確認してから、notifyDataSetChangedを呼び出してください。 –

+0

ケースR.id.Go:私のすべてのlistViewデータを取得するメソッドがあります。次に、アダプタがnullかどうかを確認します。本当の場合は、アダプタを設定してから、noftifyDataSetChanged()を呼び出します。 – Rovin

答えて

0

notifyDataSetChanged()を呼び出す代わりに、listView1.setAdapter(adapter)を呼び出すと、リストビューが強制的に更新されます。

+0

上記のコードを見ると、ここで述べたのと同じです。しかし、私の問題は、最初に私はmenuitemをクリックし、トーストは私たちがリストビューではなく、私は再度リストビューを参照してmenuitemをクリックしてください。それは私の問題です – Rovin

+0

listView1.requestLayout()またはlistView1.invalidate()を試してください。これらの4つのメソッドの少なくとも1つが常にリストビューをリフレッシュするため、データが実際に変更されることを確認するためにコードを見てデバッグしてください。 –

+0

まだ無駄です。私のデバッグに問題はありません – Rovin

関連する問題