从集合集创建ListView

时间:2012-03-06 03:14:33

标签: java android android-listview set

我目前正在开发一种能够添加声音作为喜爱的音板。我有一个收藏夹选项卡,我正在努力在单击时向ListView添加声音。我做了一些研究,并发现了一篇建议在避免重复项目时使用Set的帖子。在我的应用程序类中,我有一个全局变量:public Set<String> favorite_list = new TreeSet<String>();。在我的ListViewActivity中我有

ArrayList favorite_list = (ArrayList) appState.favorite_list;
        setListAdapter(new ArrayAdapter<String>(this, R.layout.favorites, favorite_list));

每当我点击“收藏夹”标签时,app力就会关闭。任何帮助表示赞赏。 谢谢,贾斯汀

编辑:LogCat

03-05 21:25:12.996: E/AndroidRuntime(5485): FATAL EXCEPTION: main
03-05 21:25:12.996: E/AndroidRuntime(5485): java.lang.RuntimeException: Unable to start activity ComponentInfo{vartanian.android.epicmealtimepro/vartanian.android.epicmealtimepro.Favorites}: java.lang.ClassCastException: java.util.TreeSet cannot be cast to java.util.ArrayList
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1797)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.widget.TabHost.setCurrentTab(TabHost.java:346)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:540)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.view.View.performClick(View.java:3511)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.view.View$PerformClick.run(View.java:14105)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.os.Handler.handleCallback(Handler.java:605)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.os.Looper.loop(Looper.java:137)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.app.ActivityThread.main(ActivityThread.java:4424)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at java.lang.reflect.Method.invokeNative(Native Method)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at java.lang.reflect.Method.invoke(Method.java:511)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at dalvik.system.NativeStart.main(Native Method)
03-05 21:25:12.996: E/AndroidRuntime(5485): Caused by: java.lang.ClassCastException: java.util.TreeSet cannot be cast to java.util.ArrayList
03-05 21:25:12.996: E/AndroidRuntime(5485):     at vartanian.android.epicmealtimepro.Favorites.onCreate(Favorites.java:27)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.app.Activity.performCreate(Activity.java:4465)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-05 21:25:12.996: E/AndroidRuntime(5485):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
03-05 21:25:12.996: E/AndroidRuntime(5485):     ... 18 more

申请类:

public class Data extends Application {
     public Set<String> favorite_list = new TreeSet<String>();
}

ListView类:

public class Favorites extends ListActivity {
    /** Called when the activity is first created. */
    @SuppressWarnings("unchecked")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Data appState = ((Data)this.getApplication());
        if(appState.favorite_list.isEmpty() == true){
            appState.favorite_list.add("None");
        }
        ArrayList favorite_list = (ArrayList) appState.favorite_list;
        setListAdapter(new ArrayAdapter<String>(this, R.layout.favorites, favorite_list));
        ListView lv = getListView();
        lv.setTextFilterEnabled(true);

        lv.setOnItemClickListener(new OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) {
            // When clicked, show a toast with the TextView text
            Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
                Toast.LENGTH_SHORT).show();
          }
        });
    }
}

0 个答案:

没有答案