Pregunta

He implementado una vista de lista personalizada con múltiples vistas de textVIED de un tutorial encontrado aquí Y todo funciona muy bien, pero me gustaría poder actualizar las vistas de text en la marcha con nuevos datos.

Por ejemplo, configuré un escucha de clic en los elementos en ListView, y cuando se hace clic se muestra un diálogo que solicita al usuario que ingrese datos. Puedo obtener los nuevos datos llamando a PopulateList () y actualizar la matriz, pero los nuevos datos no se muestran en el TextViews hasta que se reinicie la actividad. ¿Cómo puedo decirle al SimpleAdapter que obtenga los nuevos datos y los muestre tan pronto como se descarte el diálogo?

Editar: código que se muestra:

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

Para mencionar el diálogo:

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

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

El cuadro de diálogo de TimePicker donde se llama 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(); 

        }
¿Fue útil?

Solución

Has probado

adapter.notifyDataSetChanged();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top