I set up adapter for ListView and in my inflaterLayout i put more one TextView to display Category, and when i get same category name that time i hide Textview from ListView and when i get the different category that time i set visible for TextView, so now i get perfect data but when i am trying to scroll the ListView that time each row changed automatically,
So what is the solution for it to prevent the changes the position of list items?
If you have any idea related to it, than please help me.
Thanks in advance.
Don't add any view at getView(). Instead, add the other TextView before, and set its visibilty to be 'gone'. At getView() check if you need this view, if so, set its visibility to be 'visible' otherwise, set 'gone ' (you must set the visibilty for every list item even if you believe that you don't have to do so).
Related
I'm stuck on a little problem.
When I click on a row in my RecyclerView, I'd like to change its color to some other color (i.e.: red).
Then, if I click this row again, I would like to set its color back to the normal one (i.e.: white).
Then, if I click on a second row or n-th row, I would like to do the same.
I've tried to work on the RecyclerView Adapter class, in my ViewHolder I tried some ideas counting user clicks, setting a boolean to check the colored rows, and getAdapterPosition to know what is the row's position... but actually all my tries failed!
Would you please help me with that problem?
It seems that I'm close to the solution, but need a little help
You're going to need to keep track of which items were selected on the list (otherwise any changes to the view will simply be recycled).
Keep a list of selected items within your adapter. In the adapter's onBindViewHolder you can check against the list and if the list contains the view/item, you can color the view accordingly.
Edit: Refer here for a working example
How to properly highlight selected item on RecyclerView?
In my layout I have a button and a listview. How can I change the imageview of item I selected when the button is clicked. So lets say, I select 5 items, and after I click the button, images for those 5 items will be changed.
So I am confused what function I should use. Right now i used button.setOnClickListener but it seems wrong because only the very first item's imageview will be changed when button clicked. Should I use listview.setItemOnClickListener? Or is there any other way I can do this?
Thanks a lot!
Add a boolean to the data object in your adapter. Say you've got ArrayAdapter<MyDataObject>. Add some kind of "selected" field in the MyDataObject, and toggle it when you "select" the row.
Override getView in the adapter (you'll need a custom Adapter, btw. I'd just extend ArrayAdapter). When you render the row, if the "selected" field is true, show the "other" image.
When you click the button, call 'notifyDataSetChanged' on the adapter. The will cause the visible rows to refresh themselves (and call getView for each).
I think that'll work.
Since you only want images to change when you click the button, you'll need to have some kind of global boolean, so the getView won't show the image until the button has been clicked.
The complication here is, you have to deal with rows that may have been scrolled out of view, which don't have active views, but logically exist. It would be really hard to explain the concept here. I'd suggest some tutorials on ListView if you're not familiar with the recycling of row views.
You can used custom baseadapter for listview and setonclicklistener in the getView() method.... see tutorial here this is hope for help
You can use button click listener as well as on itemClickListener too but to make a image view in selected state in a list, you have to call setSelected method of imageview parent layout.
Please put a comment if you don't get me.
Thanks
I am new to the Android Development. And I am stuck with the Customized list view.
Actually, in my activity there is two customized list view say list1 and list2.
Each list view's row having CheckBox, TextView and Delete button.
Now, my problem is that if in list1, for any row if the check box button is checked then at that time I also have to checked the checkbox of list2's child also.
I don't understand how to access the list2's child into the list1.
Please help me.
Thanks in Advance...:)
Use the function setOnItemClickListener of list1. You can get the position of the value you have selected. Take that position and use it to select the value in list2
I have a problem with my customized Listview with 2 TextViews and a CheckBox in each item, the problme is when scrolling the Listview, the checked items get unchecked randomly and vice versa, can anyone help to define a customized Adapter to solve this problem, i'll be so thankful
I had the same problem and I solved as follows:
I have a boolean variable isCheckedByUser. In the adapter, everytime I do something with the checkbox, i set this variable to false first, do all the things I have to with the checkbox, and set the variable to true again. Then, in the method onCheckedChanged I check if this variable is true, if so, means that the user wanted to modify the state, so I do whatever its needed with the checkbox.
In fact, this problem is not so "random". The listview reuses the cells, so that's why for you seems like the checkboxes are unchecked randomly.
Check that you correctly recycle the convertView param in getView.
If the view was already in use, ensure the checked state fits with the new item represented.
I have created one list view.. it is having 5 items...
Now I want split the list items...
when user clickon the first listitem or focus on first item then immediately it has to show followed some text views or other things..but it has to show same list..
and agian same when he clickon or focus on the second item that first item has to be close and second item has to act some thing....
I think you need to implement the concept of "Expandable Listview", so that the clicking on one item, it will be expanded with their sub-items.
Refer the android-sdk page of Expandable ListView: http://developer.android.com/reference/android/widget/ExpandableListView.html
For having an example, check this site: http://mylifewithandroid.blogspot.com/2008/05/expandable-lists.html
Pls, check the below image, do you want to perform as same ????
If you want to do the same, it is already given in the "API-Demos" at Views/Expandable Lists/1. Custom Adapter.
Enjoy !!
The problem is that you cannot use the standard ListView in your case, because in the standard ListView, the View of each row has to be one TextView.
In your case, you need it to be at least two TextViews (The standard Text, and the one that's gonna show up onClick/onFocus).
You have to create your custom ListAdapter, and override the getView() function.
Here is a code snippet that shows how to do it properly:
Custom Adapter
In the getView(), you have to inflate the XML file that describes your List Row, and return it.
In your case, I believe your XML file should contain 2 TextViews, one visible and one invisible.
Then, to handle the clicks, you can set a onItemClickListener on your ListView in your Activity class.
The best way may be to have your Activity class implementing onItemClickListener, and to use this onItemClickListener to handle those.
In the onClick() function, you just have to set the Visibility of your hidden TextView to VISIBLE.
You need to build custom rows, and handle showing more text on each row, there is no easy magicall way of doing it, but inflating your own rows, and setting a couple of attributes visibility isnt all that hard either.