从Activity转换为ListActivity

时间:2011-12-03 08:19:05

标签: android android-listview android-activity

此代码基本上从数据库中提取数据并将其与搜索框一起显示在列表中,该搜索框有助于从列表中过滤掉特定值。

请查看此快照!

http://imgur.com/MpkXe

但问题是DataAttach.javaActivity扩展而来,不支持onListItemClick()

如果我想加入onListItemClick(), 我必须从ListActivity而不是Activity扩展课程。

这就是问题所在。 如果我从ListActivity扩展该类,我不能在我的视图中包含搜索框。

我陷入僵局,任何建议都表示赞赏。谢谢。

DataAttach.java(片断)

                    symbolarr = dbM.getSymbol();

                    if (symbolarr != null) {
                        list1 = new String[symbolarr.length];

                        for (int i = 0; i < symbolarr.length; i++) {
                            list1[i] = symbolarr[i];
                        }
                    }

                    // ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    // android.R.layout.simple_list_item_1, symbolarr);
                    // setListAdapter(adapter);

                    lv.setAdapter(new ArrayAdapter<String>(this,
                            android.R.layout.simple_list_item_1, symbolarr));

DbManager.java(片断)

            public String[] getSymbol() {
                Cursor cur;
                try {
                    cur = mDb.rawQuery("select symbol,company_name from scrip", null);
                } catch (SQLiteException e) {
                    throw new Error(" *** ERROR in cursor *** " + e.getMessage());
                }

                String[] b1 = new String[1326];
                int x = 0;
                if (cur.moveToFirst()) {
                    do {
                        b1[x] = cur.getString(cur.getColumnIndex("symbol"));
                        x++;
                    } while (cur.moveToNext());
                }
                cur.close();
                return b1;
            }

main.xml中

    < LinearLayout android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"
    android:id="@+id/MainLayout">

    < EditText android:id="@+id/txt1" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:hint="Search">
    < /EditText>

    < ListView android:id="@+id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    < /ListView>

    < /LinearLayout>

2 个答案:

答案 0 :(得分:2)

你实际上可以采取任何一种方式:

  1. 使用自定义布局定义ListActivity:http://developer.android.com/reference/android/app/ListActivity.html请注意,您必须像@android:id/list一样设置ID。

  2. 没有ListActivity:在ListView上使用setOnItemClickListener(AdapterView.OnItemClickListener listener)

答案 1 :(得分:1)

list_view = (ListView) findViewById(R.id.list);

list_view.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            // TODO Auto-generated method stub

                            // Do here whatever you want
    }

});