onItemClickListener with custom adapter and listview
Solution 1
I think it's the similar problem like this.
Add below code to your TextView
in the XML
android:focusableInTouchMode="false"
android:clickable="false"
android:focusable="false"
and try again.
Solution 2
First of All for this you have to impliments the class with the following handler
implements OnItemClickListener
then add a function as given below onItemClick()
public void onItemClick(AdapterView parent, View v, int position, long id) {
Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();
}
And when we set the data adapter to the listview
then add the following line of code
itemlist.setOnItemClickListener(this);
Hope this will work for you...
Solution 3
I have same issue and I fix it by do like:(refer from https://github.com/sephiroth74/HorizontalVariableListView/issues/33 ) add this line in root view in layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/moduleBox"
android:id="@+id/moduleBoxSingle"
android:descendantFocusability="blocksDescendants" >
mwrazam
Updated on September 20, 2020Comments
-
mwrazam over 3 years
I am trying to set an onItemClickListener with a custom adapter and listview setup. Can't seem to get the listener working. I don't think I am setting it up properly. Any help is appreciated. Thanks very much.
Adapter:
public class ModuleAdapter extends ArrayAdapter<Module> { Context context; int layoutResourceId; Module data[]; public ModuleAdapter(Context context, int layoutResourceId, Module data[]) { super(context, layoutResourceId, data); this.layoutResourceId = layoutResourceId; this.context = context; this.data = data; } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; ModuleHolder holder = null; if(row == null) { LayoutInflater inflater = ((Activity)context).getLayoutInflater(); row = inflater.inflate(layoutResourceId, parent, false); holder = new ModuleHolder(); holder.modJapTitle = (TextView)row.findViewById(R.id.moduleJapTitle); holder.modEngTitle = (TextView)row.findViewById(R.id.moduleEngTitle); holder.modComp = (TextView)row.findViewById(R.id.moduleCompletion); holder.modRating = (RatingBar)row.findViewById(R.id.moduleScore); row.setTag(holder); } else { holder = (ModuleHolder)row.getTag(); } Module module = data[position]; holder.modJapTitle.setText(module.moduleJapaneseTitle); holder.modEngTitle.setText(module.moduleEnglishTitle); holder.modComp.setText(module.moduleCompletionRate); holder.modRating.setRating(module.moduleRating); return row; } static class ModuleHolder { TextView modEngTitle; TextView modJapTitle; TextView modComp; RatingBar modRating; }
}
Implementation:
ModuleAdapter moduleData = new ModuleAdapter(this, R.layout.module_box_item, module_data); ListView listView1 = (ListView)findViewById(R.id.moduleListContainer); listView1.setAdapter(moduleData); listView1.setCacheColorHint(Color.TRANSPARENT); listView1.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.v("Module Item Trigger", "Module item was triggered"); Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show(); } });
Also here is the XML Layout for one of the single items in the list:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/moduleBox" android:id="@+id/moduleBoxSingle" > <TextView android:id="@+id/moduleJapTitle" style="@style/moduleTitleJap" /> <TextView android:id="@+id/moduleCompletion" android:layout_above="@+id/moduleSepartor" style="@style/moduleCompletion" /> <View android:id="@+id/moduleSepartor" android:layout_below="@+id/moduleJapTitle" style="@style/moduleSeperator" /> <TextView android:id="@+id/moduleEngTitle" android:layout_below="@+id/moduleSepartor" style="@style/moduleTitleEng" /> <RatingBar android:id="@+id/moduleScore" android:layout_below="@+id/moduleSepartor" style="@style/moduleRating" android:layout_alignParentRight="true" /> </RelativeLayout>