繁体   English   中英

Android ListView adapter.notifyDataSetChanged有时可以工作,有时不能

[英]Android ListView adapter.notifyDataSetChanged sometimes works, sometimes doesn't

Android ListView适配器令人沮丧的问题

我有这段代码:

@Override
public void onClick(View v, MotionEvent event, int position) {
    int value = dice.get(position).roll();
    adapter.notifyDataSetChanged();
    Toast.makeText(getApplicationContext(), "Click on "+position + " | Output: "+value, Toast.LENGTH_SHORT).show();
}

其中dice是自定义对象的ArrayList,而adapterArrayAdapter的扩展。 单击视图时,Toast 始终可见,但是ListView仅偶尔更新。 我看不到任何图案。 有时,视图在点击时更新,有时在2或3之后。

有任何想法吗? 谢谢

尝试listview.invalidate()istview.invalidateViews() ,它可能会解决您的问题。

listview.invalidate()可能会有所帮助。

 @Override
public void onClick(View v, MotionEvent event, int position) {
    int value = dice.get(position).roll();
    dice.get(position).setValue(value); // Where setValue I hope is a method to set value of a item
    adapter.notifyDataSetChanged();
    Toast.makeText(getApplicationContext(), "Click on "+position + " | Output: "+value,     Toast.LENGTH_SHORT).show();
 }

为了澄清起见,您必须在致电notifydatachanged之前更改一些值,因此必须确保为骰子项设置新值

最终,每次触发onClick时,都必须在自定义ArrayAdapter中为按下的View重构ViewHolder。

原始挫败感的根源(为什么Android有时会自动处理,而有时候却不会)则对我而言仍然不确定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM