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之后。
有什么想法吗?感谢
答案 0 :(得分:0)
尝试listview.invalidate()
或l istview.invalidateViews()
,它可能适合您的情况。
答案 1 :(得分:0)
listview.invalidate()
可能有帮助。
答案 2 :(得分:0)
@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之前改变一些值,所以你必须确保为你的骰子项设置新值
答案 3 :(得分:0)
每次触发onClick时,我最终都需要为自定义ArrayAdapter中的按下View重建ViewHolder。
原始挫折的根源(为什么有时候Android会自动处理这种情况,有时却不会这样做)对我来说仍然不确定。