OnItemCLickListener not working in listview

前端 未结 24 2272
悲&欢浪女
悲&欢浪女 2020-11-22 11:21

Activity class code:

conversationList = (ListView)findViewById(android.R.id.list);
ConversationArrayAdapter conversationArrayAdapter=new  Conver         


        
24条回答
  •  独厮守ぢ
    2020-11-22 11:56

    Two awesome solutions were this, if your extending ListFragment from a fragment, know that mListView.setOnItemClickListener wont be called before your activity is created, this ensured it is set when activity has been created

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mListView.setOnItemClickListener(new OnItemClickListener() {
    
            @Override
            public void onItemClick(AdapterView adapterView, View view, int position, long rowId) {
                // Do the onItemClick action
    
                Log.d("ROWSELECT", "" + rowId);
            }
        });
    }
    

    While looking at the source code for ListFragment, I came across this

    public class ListFragment extends Fragment {
        ...........................................
        ................................................
    
        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) {
        }
    }
    

    An onItemClickListener object is attached and it calls onListItemClick() As such the other similar solution, which works in the exact same way is to override onListItemClick()

    @Override
    public void onListItemClick(ListView l, View v, int position, long rowId) {
        super.onListItemClick(l, v, position, id);
       // Do the onItemClick action
    
       Log.d("ROWSELECT", "" + rowId);
    } 
    

提交回复
热议问题