1

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();
}

Wheredice是自定义对象的 ArrayList 并且adapterArrayAdapter. 单击视图时, Toast始终可见,但 ListView 仅偶尔更新。我看不出它有什么规律。有时视图会在点击时更新,有时会在 2 或 3 次之后更新。

有任何想法吗?谢谢

4

4 回答 4

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 之前更改一些值,因此您必须确保为您的骰子项目设置新值

于 2013-08-07T07:08:39.013 回答
0

尝试listview.invalidate()或 l istview.invalidateViews(),它可能会在您的情况下解决问题。

于 2013-08-07T04:10:50.733 回答
0

listview.invalidate()可能有帮助。

于 2013-08-07T06:24:52.400 回答
0

每次触发 onClick 时,我最终都不得不为自定义 ArrayAdapter 中的按下视图重建 ViewHolder。

最初的挫败感(为什么有时 Android 会自动处理,有时不会)对我来说仍然不确定。

于 2013-08-07T23:42:56.977 回答