我已经实现了一个自定义的listview,其中有来自here的教程中的多个textview,一切都很好,但是我希望能够用新的数据动态更新textview。
例如,我在listview中的项目上设置了一个click监听器,当单击时会显示一个对话框,提示用户输入数据。我可以通过调用populateList()获取新数据并更新数组,但是在活动重新启动之前,新数据不会显示在textView中。如何告诉SimpleAdapter获取新数据,并在对话框关闭后立即显示它?
编辑:代码显示:
在oncreate中:

lv = (ListView) findViewById(R.id.list);
adapter = new SimpleAdapter(
            this,
            list,
            R.layout.listtextview,
            new String[] {"Title","Desc"},
            new int[] {R.id.settingsListItem,R.id.settingsListDesc}
            );
    populateList(settingsList, settingsListDetails);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener
        (new OnItemClickListener()
            {
                public void onItemClick(AdapterView<?> parent, View
                view,int position, long id)
                {
                   if (position == 0)
                                       {
                     showDialog(WAKE_TIME);
                   }
                }
         });

打开对话框:
public Dialog onCreateDialog(int id)
{
    switch(id) {
        case WAKE_TIME :

   return new TimePickerDialog(this,WakeTimeSetListener,
   wakeHour, wakeMinute, false);
}

调用notifydatasetchanged的计时器对话框:
private TimePickerDialog.OnTimeSetListener WakeTimeSetListener = new
TimePickerDialog.OnTimeSetListener()
{
    public void onTimeSet(TimePicker view, int hourOfDay, int minute)
        {
            wakeHour = hourOfDay;
            wakeMinute = minute;

            wakeHourText = Integer.toString(hourOfDay);
            wakeMinuteText = Integer.toString(minute);

            String preftime = hourOfDay + ":" + minute;

            SimpleDateFormat df = new SimpleDateFormat("HH:mm");
            SimpleDateFormat dfOut = new SimpleDateFormat("hh:mm a");

            try
            {
                wakeDate = df.parse(preftime);
            }
            catch (ParseException e1)
            {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }


                populateList(settingsList, settingsListDetails);

                adapter.notifyDataSetChanged();

        }

最佳答案

你试过了吗

adapter.notifyDataSetChanged();

09-19 07:09
查看更多