搜索界面中的Android可点击列表项

时间:2012-09-22 16:37:03

标签: android

在我的Android应用程序中,我的搜索功能正常工作,列表被正确填充,但这些项目无法点击。我正努力让它发挥作用。这是我的代码,任何人都可以看到为什么这些项目不可点击?

    private void showResults(String query) {
    Cursor cursor = DBHelper.searchDB(query);
    startManagingCursor(cursor);
    String[] searchFrom = new String[] { DBAdapter.KEY_TITLE,
            DBAdapter.KEY_YEAR, DBAdapter.KEY_MAKE,
            DBAdapter.KEY_MODEL };
    int[] displayHere = new int[] { R.id.rTitleTV, R.id.rYearTV,
            R.id.rMakeTV, R.id.rModelTV };
    SimpleCursorAdapter records = new SimpleCursorAdapter(this,
            R.layout.record_2, cursor, searchFrom, displayHere);
    setListAdapter(records);
    DBHelper.close();

    // --- Click on list item ---

    ListView clickList = getListView();
    clickList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                }
            });

    // --- END click on list item ----

}

我只想让onClick工作,我不在乎它现在什么都不做。我将把这个功能放在以后。


record_2.xml的一个例子:

<TextView 
    android:id="@+id/rMakeTV" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="5dp" 
    android:text="Make" 
    android:textColor="#000000" 
    android:textSize="16dp" 
    android:textStyle="bold" > 

</TextView>

我已根据Sam指出的内容尝试了这一点,但列表项目仍无法点击。

        // --- Click on list item ---

    AdapterView<?> clickList = getListView();
    clickList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                }
            });

    // --- END click on list item ----

在我看来,由于records中没有setOnItemClickListener ListAdapter的引用,它不起作用?

2 个答案:

答案 0 :(得分:0)

试试这个。在方法AdapterView中删除OnItemClickListener之前的setOnItemClickListener()。或者使用简单AdapterView

替换View

答案 1 :(得分:0)

您在onItemClick()方法中没有做任何事情,您如何知道它是否正常工作(除非您使用调试器)?由于您的代码看起来很好,请尝试这样简单的事情:

ListView clickList = getListView();
clickList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        Log.v("Test", "A row was clicked with OnItemClick!");
    }
});

观看您的logcat以获取这些消息。