I have ListView
with custom Adapter
which supplies View
to ListView
in this way:
public View getView(int position, View convertView, ViewGroup parent)
{
RelativeLayout.LayoutParams lineParams;
RelativeLayout line=new RelativeLayout(context);
TextView tv=new TextView(context);
tv.setText("Text in postion="+i);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
line.addView(tv, lineParams);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
//checkbox
CheckBox checkBox=new CheckBox(context);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
line.addView(checkBox, lineParams);
return line;
}
And somewhere inside ListView
there's setOnItemClickListener()
, which should intercept item clicking events. My problem that, whenever I try to add checkbox to item - I don't get any responces from my ListView
. If I skip CheckBox
or any other Button
it works.
I am really stuck with this problem, I have tried all kind of Layouts, aligning, wrapping and so on - useless. Looks like CheckBox
interferes ListView
item click events.
Any ideas how to overcome?
I have also faced the same issue I have tried to set
android:focusable="false"
to listview but it don't work then I add this to listview item.. like in my listview item I have uesed Toggle button which was creating problem, I addandroid:focusable="false"
to Toggle button and listview on item click listener start work againI had also had the problem of a Button in my ListView. Unfortunately just setting the focus to false for all objects in my Adapter did not work for me.
I now have a workaround.
In your Adapter create an OnClickListener for the button (or other clickable object) if you have not already done that. In that OnClickListener you call the OnItemClickListener yourself.
It does mean that you will need to give your adapter access to both the parent ListView and the OnItemClickListener.
Add following line to your listView
or make sure to set following lines to your layout text fields
just add this line into the item views instead of listView itself
check more detail about this from Android custom ListView unable to click on items
You can consider to write your on OnTouchEvent in your listview item and send the proper touchEvent to you child view , the button .
Well i know none of the above solutions will work.I tried changing xml attributes but those does not work out, But i implemented it in a new fashion. Here is how:
Create an interface
CheckBoxOnCheckListener
with methodonCheckBoxChecked
and pass needed parameters, implement interfaceCheckBoxOnCheckListener
in your activity or fragment containing listView.Next in your adapter, declare an
mListener
asCheckBoxOnCheckListener
, and pass this as a parameter to Adapter's constructor fromfragment/activity
and cast it toCheckBoxOnCheckListener
and assign tomListener
.Next set
mListener
asitemView.onClick
orCheckBox.onCheckCheckedListener
andonCheckChanged
method callmListener.onCheckBoxChecked
.That's it. It will definitely work,it worked for me. For code just pm.