2015-09-17 4 views
0

Как сохранить состояние моего метода onSaveInstanceState?Сохранение состояния списка

public class MainActivity extends AppCompatActivity { 

    private ListView listView; 
    private List<RssItem> items; 

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

     listView = (ListView) findViewById(R.id.listView); 

     onStartCommand(); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putStringArrayList("return", items); 
    } 

    private void onStartCommand() { 
     Intent intent = new Intent(getBaseContext(), RssIntentService.class); 
     intent.putExtra(RssIntentService.RECEIVER, resultReceiver); 
     startService(intent); 
    } 

    private final ResultReceiver resultReceiver = new ResultReceiver(new Handler()) { 
     @Override 
     protected void onReceiveResult(int resultCode, Bundle resultData) { 
      items = (List<RssItem>) resultData.getSerializable(RssIntentService.ITEMS); 
      if (items != null) { 
       RssAdapter adapter = new RssAdapter(getBaseContext(), items); 
       listView.setAdapter(adapter); 
      } else 
       Toast.makeText(getBaseContext(), "Não foi possível encontrar seu feed", Toast.LENGTH_SHORT).show(); 
     } 
    }; 
} 

Код возвращает мне следующую ошибку:

Error:(45, 17) error: method putStringArrayList in class Bundle cannot be applied to given types; 
required: String,ArrayList<String> 
found: String,List<RssItem> 
reason: actual argument List<RssItem> cannot be converted to ArrayList<String> by method invocation conversion 

ответ

1

Вы можете объявить свой список, как ArrayList:

private ArrayList<RssItem> items; 

И в методе onReceiveResult отлиты с использованием ArrayList вместо списка:

items = (ArrayList<RssItem>) resultData.getSerializable(RssIntentService.ITEMS); 

Тогда код не должен вызывать ошибок.

+0

Я внесла изменения в код, но все еще показывал то же сообщение об ошибке. Может быть некоторая ошибка с классом RssItem? –

+0

'фактический аргумент ArrayList не может быть преобразован в ArrayList ' –

+0

Объявлять элементы как ArrayList элементов; а не как ArrayList> String> items –

Смежные вопросы