check boxes in listview not working - android

I am using listview in which each item (of list view) has a checkbox and a textview.
when i am clivking on listview thw listener doesn't executes.
here is the code.
ListView lv = (ListView) findViewById(R.id.list);
final CustomListArrayAdaptor aa = new CustomListArrayAdaptor(this,data1);
lv.setAdapter(aa);
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View v,int position, long arg3)
{
TextView tv=(TextView)v.findViewById(R.id.text);
String s=tv.getText().toString();
Toast.makeText(getApplicationContext(), "Item Selected :"+s,Toast.LENGTH_LONG).show();
}
});
It doesnt show the toast "Item Selected" when clicked on any item.

This part of your code is correct. Upload the other files code also.
As much I know this could be the problem of focus.Add (android:focusable="false")
if you are defining the check box in xml file or for the java code use the method myCheckBox.setFocusable(false).

As explained here
Android custom ListView unable to click on items,
the click listener only works if no other view is focusable. Setting your CheckBox to focusable="false" should do the trick for you

Related

ListView with header, setItemOnClickListener is not working

I have different layout xml for listview and header.
I have pointed to listview layout file in my fragment page and declare setItemOnClickListener on that listview to get the data display when clicked on its' item.
However, when I clicked the child items, they are not working and they working when I clicked on header section.
Can someone tell me what is probably goes wrong?
This is my code which I believe is the most basic one. The different will be just in fragment compare to normal activity pages.
ListView lv = (ListView) myView.findViewById(R.id.listview);
lv.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(getActivity(), "This is my Toast message!",Toast.LENGTH_LONG).show();
}
});

Using simple_list_item_checked, wherever I click it's getting checked

I want to be able to click on every item on my list, and then move to another activity (this I know how to do)
And also when I click (exactly on the checkbox) then it should be clicked, because now, wherever I click on the item line, the checkbox is getting clicked.
I also want, once I click on any of the checkboxes, to get a count, because I want to put a progress bar, to show how far my students went in my book in the app,
String[] items = getResources().getStringArray(R.array.chapters);
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,android.R.id.text1, items);
ListView lv = (ListView) findViewById(R.id.listView);
lv.setAdapter(adapter);
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
#Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
CheckedTextView check = (CheckedTextView)view;
check.setChecked(!check.isChecked());
}
});
You are now checking the checkbox on the listView item click, if you want to do it on the checkbox click you should make your custom adapter instead of working with the default adapter.
Try to add checkbox in separate view of list or list item. For ex. if you have RelativeLayout then you can add your checkbox toLeftOf your listview that way your checkbox won't get clicked as you click on list item.
So I guess it's not possible to make it get clicked when only clicking on it,
So I will try to make separate check boxes, as you suggested,
Any code idea for how to get all the check boxes values (count) so I can make a g

android studio. i ask about the use of on item click listener function. how it work?

ListView listView;
ArrayAdapter<String> adapter;
String[] hotel = {"one room", "double room", "suit", "vip"};
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, hotel);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getApplicationContext(),adapterView.getItemIdAtPosition(i)+"is Checked",Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(),adapter.getItem(i),Toast.LENGTH_LONG).show();
}
});
}
Could anyone explain to me how on item clickListener work? what View view , int i , long I mean on (onclick item listener?. A new Adapter view class or object?
OnItemClickListener is a Listener which keep listening for the events. When you click any item in the ListView then this interface will fired and it'll call the onItemClick callback(abstract method). So just override this method and put your code which needs to run when the item is clicked. In your case, you're just showing the item id with Toast.
onItemClick : It is a Callback method in Android. This can be invoked when an item in this ListView has been clicked.
This method accepts four parameters adapterView, view, i, l
AdapterView(adapterView): The AdapterView where the click happened. This might be a ListView, GridView etc. These classes are derived from the AdapterView class.
View(view): The view within the AdapterView that was clicked (this will be a view provided by the adapter). The View parameter passed in the onItemClick() method when you click the item in the ListView.
int(i): The position of the view in the adapter. By this way, you can get the item. Position starts from 0 to n.
long(l): The row id of the item that was clicked.
Please see this documentation. Hope this helps you...

ListView with OnItemClickListener

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();
}
});
Though a very old question, but I am still posting an answer to it so that it may help some one.
If you are using any layout inside the list view then use ...
android:descendantFocusability="blocksDescendants"
... on the first parent layout inside the list. This works as magic the click will not be consumed by any element inside the list but will directly go to the list item.
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!");
}
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);
If you want to enable item click in list view use
listitem.setClickable(false);
this may seem wrong at first glance but it works!
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);
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) -> {
...
});
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.
If you define your ListView programatically:
mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
In Java as other suggest
listitem.setClickable(false);
Or in xml:
android:clickable="false"
It works very fine
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" />
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:
Make list clickable
lv.setOnItemClickListener( new OnItemClickListener() {
#Override
public void onItemClick(AdapterView < ? > parent, View view,
int position, long id) {
// TODO Auto-generated method stub
}
} );
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"
...
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
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:id="#+id/list_view"
android:layout_below="#+id/info_text"
/>
Add this in your MainActivity file.
ListView listView;
listView = findViewById(R.id.list_view);
String[] fruits = new String[5];
fruits[0]="hello";
fruits[1]="hello";
fruits[2]="hello";
fruits[3]="hello";
fruits[4]="hello";
List newList = new ArrayList(Arrays.asList(fruits));
ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, newList);
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
String selectedItem = (String) parent.getItemAtPosition(position);
Toast.makeText(DisplayPannel.this, selectedItem, Toast.LENGTH_SHORT).show(); }
});

Changing Java ListView to XML

Alright, so I followed a tutorial on the Android website, and I got a ListView going in my application. But, the example they had did everything in Java basically. How could I transform the following code to XML?
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
I know I can't make the click listener XML, I just put that there for example.
You don't really need to change anything to XML in that particular piece of code. ListActivity will use a full-screen ListView if there is no call to setContentView(). Here is an example of a ListActivity with a custom layout, if that is what you are interested in.
Also, please get rid of getApplicationContext(). Just use this to reference the Activity, which itself is a Context.

Categories

Resources