Skip to content Skip to sidebar Skip to footer

Set Onclicklistener For Items In Listview With 2 Views

I have a ListView, with items with this layout:

Solution 1:

You have to use set onclicklistener to all elements inside ListView. I have created a listview. set an adapter to the listview. My adapter is reponsible to show each element of the listview. so inside getView() I will assign onclicklistener to all the elemnts to whom i want to get the click event.

Example

public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        ViewHolder holder;
        if(convertView==null){
            vi = inflater.inflate(R.layout.item, null);
            holder=new ViewHolder();
            holder.text=(TextView)vi.findViewById(R.id.text);;
            holder.image=(ImageView)vi.findViewById(R.id.image);
            vi.setTag(holder);
        }
        else
            holder=(ViewHolder)vi.getTag();

        holder.text.setText("item "+position);
        holder.image.setTag(data.get(position));
        holder.image.setOnClickListener(this);
        holder.text.setOnClickListener(this);
        imageLoader.DisplayImage(data.get(position), activity, holder.image);
        return vi;
    }

    @Overridepublic void onClick(View arg0) {
        // TODO Auto-generated method stub
        System.out.println("...clicked view is...."+arg0);
    }

Thanks Deepak

Solution 2:

You dont need a OnClickListener for each list item, but you do need to find each listview, e.g. in your activity OnCreate

listView1 = (ListView) this.findViewById(R.id.ListView1);listView2 = (ListView) this.findViewById(R.id.ListView2);

then your onListItemClick becomes -

@OverrideprotectedvoidonListItemClick(ListView l, View v, int position, long id) { 
super.onListItemClick(l, v, position, id);

if (l.equals(listView1))
{
    switch (position)
    {
       case0:
         Toast.makeText(mCtx, "list1-element1", Toast.LENGTH_SHORT).show();
         break;
       case1:
         Toast.makeText(mCtx, "list1-element2", Toast.LENGTH_SHORT).show();
         break;
    }
}
else
{
    switch (position)
    {
       case0:
         Toast.makeText(mCtx, "list2-element1", Toast.LENGTH_SHORT).show();
         break;
       case1:
         Toast.makeText(mCtx, "list2-element2", Toast.LENGTH_SHORT).show();
         break;
    }
}


}

Unless I've misunderstood what your trying to do.

Solution 3:

I might be missing something here, but isn't the neat version to go with setting:

aListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

And then implement:

@OverridepublicbooleanonOptionsItemSelected(MenuItem item) {
    Log.d(LOG_TAG, "List view click: " + getListView().getCheckedItemCount());
    Toast.makeText(this,
            String.valueOf(getListView().getCheckedItemCount()),
            Toast.LENGTH_LONG).show();
    returntrue;
} 

The above solutions has been available since API level 1

Post a Comment for "Set Onclicklistener For Items In Listview With 2 Views"