![](/img/trans.png)
[英]Android BaseAdapter notifyDataSetChanged() sometimes works and sometimes doesn't
[英]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,而adapter
是ArrayAdapter
的扩展。 单击视图时,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.