0

我正在使用 aAsyncTask为 a 加载数据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.

Only caveat is that for the ListView to update using this approach, you must be modifying the data that is in the adapter.

于 2013-01-08T00:25:25.643 回答
0

我认为你需要调用它而不是无效

ListAdapter.notifyDataSetChanged();

链接到 android 参考

于 2013-01-08T00:24:40.000 回答