Pergunta

Como acima, é feito automaticamente? Minha lista estava vazia quando a orientação Chmyanges? e não, eu preciso da mudança de orientação =)

Meu adaptador

public class ResultsAdapter extends ArrayAdapter<SearchItem> implements Filterable{

private ArrayList<SearchItem> subItems;
private ArrayList<SearchItem> allItems;// = new ArrayList<SearchItem>();
private LayoutInflater inflater;
private PTypeFilter filter;
private OnCheckedChangeListener test;

public ResultsAdapter(Context context, int textViewResourceId, ArrayList<SearchItem> items,OnCheckedChangeListener a) {

    super(context, textViewResourceId, items);
        //this.subItems = items;
        for( int i = 0;i < items.size();i++){
            subItems.add(items.get(i));
        }
        this.allItems = this.subItems;
        inflater= LayoutInflater.from(context);

        test = a;
}

Meu OnCreate

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);        



    ListView lvr = (ListView)findViewById(R.id.search_results);



  //  if(savedInstanceState == null){
        this.m_adapter = new ResultsAdapter(home.this, R.layout.listrow, sResultsArr,home.this);
        this.specsAdapter = new FeaturesExpandableAdapter(home.this,new ArrayList<String>(),new ArrayList<ArrayList<Feature>>()); 
   // }
        lvr.setAdapter(this.m_adapter);

obrigado rapazes

Foi útil?

Solução

Você também pode usar http://developer.android.com/reference/android/app/activity.html#onretainnonConfigurationInstance ()

Algo assim em sua atividade:

@Override
public Object onRetainNonConfigurationInstance() {
    return this.m_adapter.getItems();
}

E então em seu OnCreate ():

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    // more init stuff here

    sResultsArr = (ArrayList<SearchItems>)getLastNonConfigurationInstance();
    if(sResultArr == null) {
        sResultsArray = new ArrayList<SearchItems>();  // or some other initialization
    }

    self.m_adapter = new ResultsAdapter(home.this, R.layout.listrow, sResultsArr,home.this);

    // ...
}

Outras dicas

Se você tiver dados na memória que precisam permanecer durante uma mudança de orientação, precisa fazer algo para organizar isso. A melhor solução é implementar onSaveInstanceState() E use -o para armazenar seus dados, porque isso é usado não apenas para mudanças de orientação, mas também outras situações (por exemplo, sua atividade está na pilha atual, mas precisa ser expulso de Ram para liberar espaço para as coisas mais tarde na pilha).

Eu acho que você está da maneira errada. Por favor, reserve um tempo para ver este vídeo dos desenvolvedores do Android: http://www.youtube.com/watch?v=wdbm6wveo70 (cerca de 1 hora).

Eu segui o vídeo e minha visualização da lista funciona bem quando a tela muda de orientação :-)

Eu resolvi esse problema usando OnSaveInstanceState() e OnRestoreInstanceState()

@Override
    protected void onRestoreInstanceState(Bundle state){
        super.onRestoreInstanceState(state);
        name_array.addAll(state.getStringArrayList("key"));
        setListAdapter(arrayAdapter);
        arrayAdapter.notifyDataSetChanged();
    }

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

name_array é segurar ArrayAdapter arrayAdapter = new ArrayAdapter<String>(this ,R.layout.item,name_array);

Agora, quando você muda de paisagem para retrato e reverso, os dados não são Los

Os dados não devem ser perdidos quando você altera a orientação. A única coisa que posso imaginar é que o layout para sua atividade não está correto, como os controles saem da área visível ao alterar a orientação.

Por favor, coloque este código em seu AndroidManifest.xml Arquivo.

activity
        android:name="MainActivity"
        android:label="@string/app_name" 
        android:configChanges="keyboardHidden|orientation|screenSize"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top