Frage

Ich habe eine benutzerdefinierte ListView mit mehreren Textviews aus einem gefundenen Tutorial implementiert hier Und alles funktioniert sehr gut, aber ich möchte in der Lage sein, die Textviews im laufenden Flug mit neuen Daten zu aktualisieren.

Zum Beispiel habe ich einen Klick -Listener in den Elementen in der Liste gesetzt, und wenn ein Dialog angezeigt wird, wird angezeigt, in dem der Benutzer aufgefordert wird, Daten einzugeben. Ich kann die neuen Daten erhalten, indem ich Populatelist () aufrufen und das Array aktualisieren, aber die neuen Daten werden in den Textviews erst dann angezeigt, bis die Aktivität neu gestartet wird. Wie kann ich den SimpleDapter mitteilen, dass er die neuen Daten erhalten und sie anzeigen soll, sobald der Dialog entlassen wird?

Bearbeiten: Code gezeigt:

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

Um den Dialog zu erheben:

public Dialog onCreateDialog(int id) 
{
    switch(id) {
        case WAKE_TIME :

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

Der TimePicker -Dialog, in dem BenachrichtigungDatasetchanged genannt wird:

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

        }
War es hilfreich?

Lösung

Hast du es versucht

adapter.notifyDataSetChanged();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top