[英]Android ListView notifyDataSetChanged() dont refresh the list
這不是一個重復的問題,我已經嘗試了 StackOverflow 上出現的關於這個主題的所有內容,但沒有任何效果。
問題是,當我嘗試在添加新數據時更新列表視圖時,在調用 notifyDataSetChanged() 時它不顯示更新的數據,我必須退出並再次進入活動以查看列表視圖中的更改。 沒有任何效果,甚至清除列表並再次添加新數據。
不用擔心 http 客戶端,問題不存在,完美運行。 用“手工制作”ArrayList 替換它會出現同樣的問題。 循環也不是問題,同樣的問題在循環之外仍然存在。
public class CredentialManager extends AppCompatActivity implements View.OnClickListener {
final Handler handler = new Handler(Looper.getMainLooper());
ListView credentialsList;
ArrayList<String> credentials;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_credential_manager);
credentialsList = findViewById(R.id.credentialsList);
credentials = HTTPClientCredentials.read("findByUser", String.valueOf(MainActivity.user.getIdUser()));
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, credentials);
credentialsList.setAdapter(adapter);
adapter.notifyDataSetChanged();
handler.postDelayed(new Runnable() {
public void run() {
credentials.clear();
credentials = HTTPClientCredentials.read("findByUser", String.valueOf(MainActivity.user.getIdUser()));
adapter.notifyDataSetChanged();
handler.postDelayed(this, 5000);
}
}, 5000);
}
}
代替:
credentials.clear();
和:
adapter.clear()
並且每當您想將數據添加到列表中時,請使用:
adapter.addAll(credentials)
或者
adapter.insert("new data")
它必須解決您的問題。
最后一點:adapter.notifyDataSetChanged(); 它沒有必要,因為它在適配器方法的主體內。 祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.