0

AsyncTaskのデータをロードするために を使用していListViewます。

データが読み込まれた後、 のinvalidate()メソッドを呼び出してListViewいますが、再描画されませんでした。配列アダプターのgetView()メソッドのコールバックにブレーク ポイントを設定しました。無効化後に呼び出されることはありません。ただし、ListViewが最初に作成された後に呼び出されます。

今それをテストするためcGlobals.gSayに、リストブックに表示されるグローバル動詞を使用します

protected void onPostExecute(String result) {  
  mReady=true;
  UpdateList();
  if (result.compareTo("na")==0)
    NextLevel();          
}

void UpdateList()
{
  cGlobals.gSay= new String("aaaaaaaaa");
  listView.postInvalidate();      
}


public class MySimpleArrayAdapter extends ArrayAdapter<String> {
  private final Context context;
  private final String[] values;

  public MySimpleArrayAdapter(Context context, String[] values) {
    super(context, R.layout.rowlayout, values);
    this.context = context;
    this.values = values;  
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = inflater.inflate(R.layout.rowlayout, parent, false);
    TextView label=(TextView)row.findViewById(R.id.label);
    label.setText(cGlobals.gSay);
    return row;
  }
} 
4

2 に答える 2

1

で利用可能な方法を使用する必要がnotifyDataSetChanged()ありますMySimpleArrayAdapter

このアプローチを使用して ListView を更新するには、アダプタ内のデータを変更する必要があることに注意してください。

于 2013-01-08T00:25:25.643 に答える
0

無効にする代わりにこれを呼び出す必要があると思います

ListAdapter.notifyDataSetChanged();

Androidリファレンスへのリンク

于 2013-01-08T00:24:40.000 に答える