Java Android ListView notifyDataSetChanged()不刷新列表
这不是一个重复的问题,我已经尝试了StackOverflow上出现的关于这个主题的所有内容,但没有任何效果 问题是,当我尝试在添加新数据时更新listview时,调用notifyDataSetChanged()时它不会显示更新的数据,我必须退出并再次输入活动才能查看listview中的更改。即使清除列表并再次添加新数据,也没有任何效果 不要担心http客户端,问题不在那里,它工作得很好。用“手工制作”的ArrayList替换它也会出现同样的问题。 循环也不是问题,同样的问题仍然存在于循环之外Java Android ListView notifyDataSetChanged()不刷新列表,java,android,listview,arraylist,notifydatasetchanged,Java,Android,Listview,Arraylist,Notifydatasetchanged,这不是一个重复的问题,我已经尝试了StackOverflow上出现的关于这个主题的所有内容,但没有任何效果 问题是,当我尝试在添加新数据时更新listview时,调用notifyDataSetChanged()时它不会显示更新的数据,我必须退出并再次输入活动才能查看listview中的更改。即使清除列表并再次添加新数据,也没有任何效果 不要担心http客户端,问题不在那里,它工作得很好。用“手工制作”的ArrayList替换它也会出现同样的问题。 循环也不是问题,同样的问题仍然存在于循环之外 p
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);
}
}
公共类CredentialManager扩展AppCompatActivity实现View.OnClickListener{
最终处理程序=新处理程序(Looper.getMainLooper());
列表视图凭证列表;
ArrayList凭证;
阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u credential\u manager);
credentialsList=findViewById(R.id.credentialsList);
credentials=HTTPClientCredentials.read(“findByUser”,String.valueOf(MainActivity.user.getIdUser());
adapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,凭证);
凭证列表。设置适配器(适配器);
adapter.notifyDataSetChanged();
handler.postDelayed(新的Runnable(){
公开募捐{
credentials.clear();
credentials=HTTPClientCredentials.read(“findByUser”,String.valueOf(MainActivity.user.getIdUser());
adapter.notifyDataSetChanged();
handler.postDelayed(这个,5000);
}
}, 5000);
}
}
更换:
credentials.clear();
与:
adapter.clear()
无论何时,只要您想向列表中添加数据,请使用:
adapter.addAll(credentials)
或
它必须解决你的问题
最后一点:adapter.notifyDataSetChanged();它不是必需的,因为它位于适配器方法的主体内。祝你好运。看看这个:成功了,谢谢!
adapter.insert("new data")