recycleview中有textview。textview的值是通過adapter中onbindviewholder方法內進行okhttp異步獲取。但是會出現錯亂的問題,出現用戶頭像和用戶名不一致的問題。
(盲猜可能控制元件沒系結,賦給了其他的textview)
該怎么解決
uj5u.com熱心網友回復:
這種一般都是先獲取資料再生成list吧uj5u.com熱心網友回復:
原因:控制元件復用,因為是異步操作,導致網路請求完成后設定內容時textView被更新了,異步沒有先后順序,容易錯亂。
解決方案:
在adapter中先通過textView.setTag(position),設定當前位置標記,在網路請求完成后,再次通過int currentPosition = (int) textView.getTag() ,進行判斷position是否等于currentPosition,如果相等進行setText("xxxx"),否則說明這個位置被其他條目復用的,此時已經不顯示了,不再賦值即可。
uj5u.com熱心網友回復:
對的。但是我需求是。在呈現的時候。請求資料并填充
uj5u.com熱心網友回復:
我知道這個原理。但是因為要顯示用戶名。所以不能不顯示。而且要每個都要顯示正確
uj5u.com熱心網友回復:
不會不顯示的,如果被復用,說明這個viewitem已經不可見了,故不顯示;同時它還會被顯示viewitem賦值的uj5u.com熱心網友回復:
添加一個UPDATA方法,okhttp獲取到值后存到list中,然后重繪listpublic void upData(ArrayList<FileBean> data) {
this.flies = data;
notifyDataSetChanged();
}
uj5u.com熱心網友回復:
不行。還是不正確。我用的hanlder接收,tag不對應的話。是不會賦值的。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/15493.html
標籤:Android
