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/
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
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~
- java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
- Several properties of Android listview
- Local refresh of listview and GridView
- @Autowired injection * * required a single bean, but 2 were found**
- Bitmap, cache and fresco Android image loading Library
- The perfect solution of VS2010 console program running in a flash
- Research on LRU algorithm
- The solution of “error in NLS loop more than 50” in R language
- Why does the result screen flash when visual studio runs the program?
- Springboot integration redis reports non null key required (solved)
- Solution of idea using @ Autowired annotation to report errors
- LDAP: error code 21 – objectclass: value ා 0 invalid per syntax
- Please transfer a valid prop path to form item!
- The crash of delete after QT removeitem in qgraphicsscene and the display residue
- SQL query time group_ Was cut by group_ CONCAT()
- Was import certificate — error prompt: java.security.cert .CertPathValidatorException: Certificate chaining error
- Spring MVC 406 status code / could not find acceptable representation
- Android ADB simulates click events of sliding buttons
- Solve the problem of MySQL database report 1055 error
- Python combined with Matplotlib to add button