zoukankan      html  css  js  c++  java
  • ListFragment和ListActivity的setOnItemClickListener不起作用

    在使用ListFragment时,发现一个奇怪的问题,就是getListView().setOnItemClickListener(new OnItemClickListener...)不起作用。在stackoverflow查了一下,都说是重写一下OnListItemClick函数就 好了。一番研究之后,发现了其中奥秘。

    之前代码是这样写的:

    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重写以达到自定义的目的的。

  • 相关阅读:
    CSS3实现0.5px的边框
    解决nvm导致终端启动慢的问题
    解决zsh: command not found: gitk,将git路径/usr/bin/git修改为/usr/local/bin/git
    MAC之zsh终端使用nvm安装指定版本node
    解决npm包node-sass下载失败问题
    forEach中使用async await的问题
    使用module-alias别名简化CommonJS的require路径
    关系型数据库的ACID
    Node.js ORM 框架对比
    mysql字符集 utf8 和utf8mb4 的区别
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4762819.html
Copyright © 2011-2022 走看看