【发布时间】:2015-09-04 16:26:03
【问题描述】:
在评论中解决:Adding onListItemLick/onItemLongClick in a ListFragment
问题是由 ListFragment 中单个元素的布局中的 ImageButton 产生的,即使 focusable 元素设置为 false,它仍在窃取输入,因此我不得不将其从布局中删除。
我有一个由 SimpleCursorAdapter 的扩展类填充的 ListFragment(主要用于覆盖 newView 方法),但我想在用户按下(或长按)适配器生成的列表中的项目时添加一个 AlertDialog。
我已经使用Log.d 方法尝试了onListItemClick 和onItemLongClick 的简单日志写入,但在这两种情况下都没有发生任何事情,我不知道问题出在哪里,因为代码非常简单:
public class FragmentD extends ListFragment {
private SQLiteDatabase db;
@Override
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
myDatabase myDBHelper = new myDatabase(getActivity());
db = myDBHelper.getWritableDatabase();
Log.d("DB", "Insert fatto");
String[] res_columns = new String[] {myDatabase.COLUMN2, myDatabase.COLUMN2,};
String sortOrder = myDatabase.COLUMN1 + " DESC";
String where = "*";
Cursor testCursor = db.rawQuery("select * from " + database.DATABASE_TABLE, null);
myAdapter adapter = new myAdapter(getActivity(),
R.layout.list_element,
testCursor,
res_columns,
new int[] { },
0);
setListAdapter(adapter);
}
@Override
public void onListItemClick (ListView l, View v, int pos, long id) {
super.onListItemClick(l, v, pos, id);
Log.d("CLICK", "pressed");
}
【问题讨论】:
-
试试这个;将 onListItemClick 更改为 onItemClick
-
@Arrigo Pierotti...覆盖它
-
我删除了实现
onItemClick而不是onListItemClick所需的一些额外内容,而@Override只是在我复制粘贴到这里时才丢失。 -
我在 SO 中发现了一个线程,他们遇到了类似的问题,即布局的组件窃取了其他组件的输入。检查这个,它可能对你有帮助 [stackoverflow.com/questions/7274231/…
-
@Arrigo Pierotti 欢迎......您现在可以通过接受答案来结束讨论......我在下面编辑了我之前的答案。快乐编码
标签: android android-listfragment simplecursoradapter onitemclicklistener