我无法刷新我的ArrayAdaper列表视图:S¿怎么做?

时间:2011-07-23 00:17:53

标签: android android-listview android-arrayadapter

我在stackoverflow上搜索了如何刷新使用ArrayAdapter的listview,我找到了一些解决方案,但这些解决方案中的任何一个对我都不起作用!

我有一个带有NumberPicker和listview的界面。当我按下数字选择器的按钮时,列表视图必须自行更新,但不起作用。当我按下按钮时listview没有更新itselft,它保留相同的数据......但它必须更新,因为当你按下按钮时,你正在改变适配器的一个参数,适配器正在接收新数据。 ..

这是我的代码:

public class Calendar extends Activity {
    private ListView CalendarList = null;
    private NumberPicker CalendarPicker = null;
    private ArrayAdapter MyArrayAdapter = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calendar);

        CalendarList = (ListView) findViewById(R.id.CalendarList);
        CalendarPicker = (NumberPicker) findViewById(R.id.CalendarPicker);

        CalendarPicker.setMaxValue(((MyApplication.NEQUIPOS*2)-2));//el maximo valor alcanzable por el picker es el numero de jornadas de la liga, es decir, ((NEQUIPOS*2)-2)
        CalendarList.setClickable(false);
        CalendarList.setFocusable(false);
        CalendarList.setItemsCanFocus(false);
        CalendarList.setSelected(false);
        CalendarList.setEnabled(false);

        CalendarPicker.increment.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                CalendarPicker.increment();     
                MyArrayAdapter.notifyDataSetChanged();
            }
        });

    }

    public void onResume() {
         super.onResume();
        CalendarPicker.setValue(MyApplication.RoundNumber);
        MyArrayAdapter =new ArrayAdapter<String>(this, R.layout.list_item, MyApplication.roundMatches(CalendarPicker.getValue()));
        MyArrayAdapter.setNotifyOnChange(true);

        CalendarList.setAdapter(MyArrayAdapter);
      }


}

1 个答案:

答案 0 :(得分:1)

在致电MyArrayAdapter.notifyDataSetChanged();之前,请使用新数据提供适配器,然后致电MyArrayAdapter.notifyDataSetChanged();