質問

見つかったチュートリアルから複数のテキストビューを使用してカスタムリストビューを実装しました ここ そして、すべてが非常にうまく機能していますが、新しいデータでその場でTextViewsを更新できるようにしたいと思います。

たとえば、ListViewのアイテムにクリックリスナーを設定し、クリックするとダイアログが表示され、ユーザーにデータを入力するように求められます。 populatelist()を呼び出して配列を更新することで新しいデータを取得できますが、アクティビティが再起動されるまで新しいデータはTextViewsに表示されません。ダイアログが却下されたらすぐに、新しいデータを取得して表示するようにSimpleAdapterに伝えるにはどうすればよいですか?

編集:表示されているコード:

オンクリートで:

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が呼ばれるTimePickerダイアログは次のとおりです。

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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top