Problems:
Click the button button on listview item, click to change the display state of button, slide the button on listview item is reused, the corresponding button state on item is not corresponding, and the button state on item is chaotic.
Analysis of the reasons:
Listview item caching mechanism: for better performance, listview will cache line items (the view corresponding to a line). Listview gets the items of each line through the getview function of the adapter. During sliding,
A. if a line item has already been shown on the screen, if the modified item is not in the cache, put it into the cache, otherwise update the cache;
B. before obtaining the line items that slide into the screen, it will first determine whether there are available items in the cache. If there are, it will be passed to the getview of the adapter as the convertview parameter.
In this way, getview writing can make full use of the cache and greatly improve the performance of listview. Even if there are tens of thousands of line items, the maximum number of inflates is n, and N is the maximum number of listview line items displayed on a screen.
According to the above caching principle, the reuse of listview will cause the chaos of the control state on the item.
For detailed analysis, please refer to http://www.trinea.cn/android/android-listview-display-error-image-when-scroll/
Solution:
The idea of Java programming is that everything is an object. If the status of an item is recorded in the corresponding object of each item, through the field of the object, each time you click to change the field value of the object, each time you display the status of the control on the item, you can judge the field value of the object. The problem of chaos has to be solved.
Add a field to the entry object without reason, but the server does not need this field. In order to unify the front and back ends, this will cause trouble. Therefore, when we add the Boolean value of state judgment to the object, we add the field modifier keyword transient before the field in the bean. For example, if the judgment Boolean value added in the bean is ischeck, then it is private transient Boolean ischeck in the bean;
Transient as the name suggests: (from Youdao dict)
Transient phenomena; passing passengers; migratory birds
In Java, “transient” modifier is a special annotation to indicate that the modified field is ignored in serialization.
For detailed analysis, please refer to http://www.cnblogs.com/gaojing/archive/2011/04/14/2844973.html
Conclusion:
Therefore, adding a field to the entry object (in order to record the state of the object) and adding the keyword “transient” in front of the field can solve the problem of confusion when clicking the listview entry button~
Read More:
- Click the button to use in the react project window.open Methods open a new page and click the data again
- CSS remove the blue box after button click
- Several properties of Android listview
- Click the button to jump to a new window
- Android ADB simulates click events of sliding buttons
- Solution to the problem that the toolbar menu button cannot be clicked
- Android studio “sync project with gradle files” button disappears
- [Android] button uses the custom drawable file to set the background, and runs “error inflating class button”
- error: resource android:style/TextAppearance.Material.Widget.Button.Borderless.Colored not
- Local refresh of listview and GridView
- [Python CONDA error] cache entry design failed, entry ignored error resolution
- After using fastlick, double-click the error reporting solution
- Android 4.1:Entry name ‘classes.dex‘ collided
- [error record] Android App packaging error (entry name ‘assets / xxx. XML’ merged)
- “Input button submit is not setup” solution
- Solution of duplicate entry ‘value’ for key ‘field name’ in MySQL
- Optimization and upgrade solution for one click deployment without Jenkins under Linux
- Win10 installation git click git bash flash back problem solution
- The solution of duplicate entry ‘for key’ primary ‘when inserting data in MySQL
- Android studio compilation error: style attribute ‘@ android:attr/windowEnterAnimation ‘not found the ultimate solution