在我的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的引用,它不起作用?
答案 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以获取这些消息。