Как создать ListMenu динамически? - PullRequest
0 голосов
/ 29 февраля 2012

Я работаю над созданием словаря и пытаюсь создать ListMenu динамически, так как он создается автоматически при фильтрации слов из базы данных в алфавитном порядке.Я создал ListMenu вручную, но не могу превратить его в динамический.У кого-нибудь есть идеи, как динамически создавать ListMenu?

Вот мой код:

 package ge.gtug;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Settings extends ListActivity{


String listItems[] = {"AboutUs", "AboutApp", "Feedback"};
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(Settings.this, android.R.layout.simple_list_item_1, listItems));
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    String koba = listItems[position];
    super.onListItemClick(l, v, position, id);
    try{
    Class myClass1 = Class.forName("ge.gtug." + koba);
    Intent myIntent1 = new Intent(Settings.this, myClass1);
    startActivity(myIntent1);
    }catch(ClassNotFoundException e){
        e.printStackTrace();

    try {
    Class myClass2 = Class.forName("ge.gtug." + koba);
    Intent myIntent2 = new Intent(Settings.this, myClass2);
    startActivity(myIntent2);
    }catch(ClassNotFoundException o){
        o.printStackTrace();
            }
    }
}

}

1 Ответ

0 голосов
/ 29 февраля 2012

Вместо использования массива для хранения данных используйте список (ArrayList, Vector или аналогичный).И всякий раз, когда вы изменяете сбор данных, вам нужно сообщить ArrayAdapter, что данные изменились - чтобы уведомить адаптер массива об изменении списка, вы вызываете метод

ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Settings.this, android.R.layout.simple_list_item_1, listItems);
setListAdapter(adapter);

listItems.add("new string");
adapter.notifyDataSetChanged();

http://developer.android.com/reference/android/widget/ArrayAdapter.html#notifyDataSetChanged%28%29

...