OnClickListener doesn't work with clickable attribute
Setting an OnClickListener
will automatically set the clickable property to true. The code you are showing is confusing though. My understanding is that your MyClass
view is the parent of the RelativeLayout
shown in the XML file.
If so, the child RelativeLayout
will get the touch events first (since it's clickable) but won't do anything with them since it doesn't have a click listener.
Just remove clickable=true
from your XML.
when you do this: android:clickable="true"
you disable the onClickListener
(its not logical but its like that..).
So set it to "false"
or just remove this line from your XML file ;)
Add id to your layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/yourId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/background"
android:clickable="true">
</RelativeLayout>
Then in java code:
public class MyClass extends RelativeLayout implements OnClickListener {
public MyClass(Context context) {
super(context);
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.book_item, this);
findViewById(R.id.yourId).setOnClickListener(this);
}
public void onClick(View v) {
Log.v("TAG", "Hello");
}
...
...
}