2015-05-25 7 views
1

Я написал приложение, которое получает сообщения и добавляет их в ListView (я полный новичок, уровень опыта 0) ... Когда я запускаю приложение, а я в MainActivity и Я получаю сообщение, оно записывается в список, но проблема в том, что когда я нахожусь в активности под названием «SmsActivity», при получении смс список не обновляется/обновляется. (Мне нужно вернуться к MainActivity, переключитесь снова SmsActivity и только тогда я вижу новые meessages.)Обновление ListView - получение SMS - Android

public class SmsActivity extends ActionBarActivity { 

ListView list_view; 
public static ArrayList<String> lista_sms = new ArrayList<String>(); 
public static ArrayAdapter<String> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sms); 

    list_view = (ListView) findViewById(R.id.list_view); 
    // adding do list in ReceiverSMS.java 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lista_sms); 
    list_view.setAdapter(adapter); 
} 

Я получаю сообщения объявленные в другом классе:

`общественный класс ReceiverSMS простирается BroadcastReceiver {

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    //---get the SMS message passed in--- 
    Bundle bundle = intent.getExtras(); 
    SmsMessage[] msgs = null; 
    String str = ""; 
    if (bundle != null) 
    { 
     //---retrieve the SMS message received--- 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 
     for (int i=0; i<msgs.length; i++){ 
      msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
      str += "" + msgs[i].getOriginatingAddress(); 
      str += " :"; 
      str += msgs[i].getMessageBody().toString(); 
      str += "\n"; 
     } 
     //---display the new SMS message--- 
     Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 
     SmsActivity.lista_sms.add(str); 
     SmsActivity.adapter.notifyDataSetChanged(); 
    } 
} 

} `

кто-нибудь знает, как обновить список, не переключаясь на MainActivity и снова SmsActivity?

ответ

-1

Я вижу, как вы используете статические методы для обновления вашего представления, если возможно, попробуйте использовать шаблон наблюдателя. еще попробуйте это

myListView.invalidateViews(); 

Пример для широколистного приемника на основе наблюдателя.

public class MainActivity extends Activity implements 
      Observer { 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      BroadcastObserver bco = new BroadcastObserver(); 
      bco.addObserver(this); 
     } 

     @Override 
     public void update() { 
      //TODO: call your desired function 
     } 
    } 

BroadcastObserver.java

public class BroadcastObserver extends Observable { 
    private void triggerObservers() { 
     setChanged(); 
     notifyObservers(); 
    } 

    public void change() { 
     triggerObservers(); 
    } 
} 

@Override 
public void onReceive(Context context, Intent intent) { 
    BroadcastObserver bco = new BroadcastObserver(); 
    bco.change(); 
} 
Смежные вопросы