ListFragment和ListActivity的setOnItemClickListener不起作用
2015-08-27 11:35
417 查看
在使用ListFragment时,发现一个奇怪的问题,就是getListView().setOnItemClickListener(new OnItemClickListener...)不起作用。在stackoverflow查了一下,都说是重写一下OnListItemClick函数就 好了。一番研究之后,发现了其中奥秘。
之前代码是这样写的:
onCreateView函数有如下代码。
但是红色部分一直运行不到
查找ListFragment.java源代码部分如下:
所以,问题出在这里,在onCreateView里setOnItemClickListener设置后,onViewCreated又会再一次 setOnItemClickListener,从而覆盖了之前的。正确的做法当然是重写onListItemClick即可。但是我觉得也可以在 onViewCreated重写以达到自定义的目的的。
之前代码是这样写的:
onCreateView函数有如下代码。
View view = inflater.inflate(R.layout.fragment_choose_school, null); list = (ListView) view.findViewById(android.R.id.list); list.setAdapter(new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, data)); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { search.setText(data.get(pos)); Step.next(); } });
但是红色部分一直运行不到
查找ListFragment.java源代码部分如下:
final private AdapterView.OnItemClickListener mOnClickListener = new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { onListItemClick((ListView)parent, v, position, id); } }; public void onListItemClick(ListView l, View v, int position, long id) { } public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ensureList(); } private void ensureList() { ... mList.setOnItemClickListener(mOnClickListener); ... }
所以,问题出在这里,在onCreateView里setOnItemClickListener设置后,onViewCreated又会再一次 setOnItemClickListener,从而覆盖了之前的。正确的做法当然是重写onListItemClick即可。但是我觉得也可以在 onViewCreated重写以达到自定义的目的的。
相关文章推荐
- 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'
- ajax上传图片
- 个人环境搭建——版本控制SVN
- code blocks 快捷键
- tomcat进程意外退出的问题分析
- 铸造意义并建立身份
- hibernate使用
- ArcGIS API for Silverlight 添加图标(自定义图标)
- N皇后
- 数据结构——二叉树
- python yield生成器
- iOS push 导航栏显示 隐藏
- 关于桶排序算法的STL实现
- 2015美团校招笔试试题
- C#学习笔记-----基于AppDomain的"插件式"开发
- C格式控制符整理
- Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
- 【python】python虚拟环境virtualenv
- HDU 1269(Tarjan模板)
- 烂泥:高负载均衡学习haproxy之TCP应用