I am using a custom ListView
with RatingBar
and ImageButton
. Here is my problem: When I click on my ListView
, my OnItemClickListener
is not working. Please can any one help me.
Code:
ListView lv = getListView();
setContentView(lv);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
The most simple solution and the easiest way I can provide is this. You just need to do these two steps.
1.add this in your XML file.
<ListView_x000D_
android:layout_width="match_parent"_x000D_
android:layout_height="wrap_content"_x000D_
android:layout_marginTop="8dp"_x000D_
android:id="@+id/list_view"_x000D_
android:layout_below="@+id/info_text"_x000D_
/>
_x000D_
ListView listView;_x000D_
listView = findViewById(R.id.list_view);_x000D_
_x000D_
String[] fruits = new String[5];_x000D_
fruits[0]="hello";_x000D_
fruits[1]="hello";_x000D_
fruits[2]="hello";_x000D_
fruits[3]="hello";_x000D_
fruits[4]="hello";_x000D_
_x000D_
List newList = new ArrayList(Arrays.asList(fruits));_x000D_
ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, newList);_x000D_
listView.setAdapter(arrayAdapter);_x000D_
_x000D_
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {_x000D_
@Override_x000D_
public void onItemClick(AdapterView parent, View view, int position, long id) {_x000D_
String selectedItem = (String) parent.getItemAtPosition(position);_x000D_
Toast.makeText(DisplayPannel.this, selectedItem, Toast.LENGTH_SHORT).show(); }_x000D_
});
_x000D_
If you want to enable item click in list view use
listitem.setClickable(false);
this may seem wrong at first glance but it works!
Hey check this, works for me... hope it work for u too
If list item contains ImageButton
Problem: OnItemClickListener
just doesn’t repond any at all!
Reason: No idea
Solution: in code, set ImageButton
's focus to “false”
1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);
2: button.setFocusable(false);
Android OnItemClickLIstener conflicts with the OnClickListener of items of row of listview in Adapter. You just have to make sure your code is well managed and properly written with standards.
Check the answer in the link given below:
Is there and image in the list view that you are using> then follow the link: http://vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-to-select-multiple/
I think when you work out on the link that I have provided first every thing will work fine, I have tried that. If you want a refined answer please elaborate the question with code and description.
Just insert the line into RatingBar:
android:isIndicator="true"
In XML the ratingbar look like this.
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:isIndicator="true"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false" />
I have an Activity that extends ListActivity.
I tried doing something like this in onCreate:
ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("Hello!", "Y u no see me?");
}
});
But that didn't work.
Instead I simply needed to override onListItemClick:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.i("Hello!", "Clicked! YAY!");
}
In Java as other suggest
listitem.setClickable(false);
Or in xml:
android:clickable="false"
It works very fine
if list item view contains button or checkbox or imagebutton, the onitemclicklistener and onitemlongclicklistener not working due to it has own onclick listener.
set focusable as false
holder.button.setFocusable(false);
lv.setOnItemClickListener( new OnItemClickListener() {
@Override
public void onItemClick(AdapterView < ? > parent, View view,
int position, long id) {
// TODO Auto-generated method stub
}
} );
1) Check if you are using OnItemClickListener or OnClickListener (which is not supported for ListView)
Documentation Android Developers ListView
2) Check if you added Listener to your ListView properly. It's hooked on ListView not on ListAdapter!
ListView.setOnItemClickListener(listener);
3) If you need to use OnClickListener, check if you do use DialogInterface.OnClickListener
or View.OnClickListener
(they can be easily exchanged if not validated or if using both of them)
You can also use lambda
. Lambda syntax is not supported under Java 1.7 or earlier JVMs.
listView.setOnItemClickListener((parent, view, position, id) -> {
...
});
Asked by many, The childs in list must not have width "match_parent" if you are looking for listview click only.
Even if you set the "Focusable" to false it wont work. Set the child's Width to wrap_content
<TextView
android:id="@+id/itemchild"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
If you define your ListView programatically:
mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
listPaired = (ListView) findViewById( R.id.listView1 );
listPairedData = new ArrayList < String >();
araPaired = new ArrayAdapter( this, android.R.layout.simple_list_item_1, listPairedData );
listPaired.setAdapter( araPaired );
listPaired.setOnItemClickListener( listPairedClickItem );
private OnItemClickListener listPairedClickItem = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView < ? > arg0, View arg1, int arg2, long arg3) {
String info = ( (TextView) arg1 ).getText().toString();
Toast.makeText( getBaseContext(), "Item " + info, Toast.LENGTH_LONG ).show();
}
};
setClickable as false to ImageButton like this
imagebutton.setClickable(false);
and then perform OnItemClickListener
to listview.
Source: Stackoverflow.com