我需要创建一个返回String []的AsyncTask类,返回的String []将用于创建列表,所以我想在AsyncTask类中创建ListActivity,但是onPostExecute方法不起作用,永远不会被称为。我的代码:
public class AsyncReadPrices extends AsyncTask<Object, String[], String[]>{
static String url = "http://www.mywebsite.com/";
static String ConfPath = new String();
protected String[] doInBackground(Object... params){
String[] menus = new String [(int) params[1]];
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(url+params[0]).openStream()));
String line = reader.readLine();
for (int k = 0; k < (int)params[1]; k++) {
menus[k] = line;
line = reader.readLine();
}
Log.i("check 1","");
return menus;
}
catch (IOException e){
e.printStackTrace();
}
Log.i("check 2","");
return menus;
}
@Override
protected void onPostExecute(final String[] menu) {
Log.i("It works!","");
new ListActivity(){
@Override
public void setListAdapter(ListAdapter adapter) {
Log.i("string", menu[0] );
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, menu));
}
};
}
}
答案 0 :(得分:0)
请避免在ListActivity()
方法中使用onPostExecute()
。您应该使用返回的值更新Adapter
或ArrayList
,然后使用相同的ArrayList
填充列表。
请尝试使用此代码: -
@Override
protected void onPostExecute(final String[] menu) {
itemListAdapter = new ItemListBaseAdapter(
YourActivity.this, data);
listView.setAdapter(itemListAdapter);
}
//应该在活动类
中更早地初始化listView// itemListAdapter如果您使用的是自定义适配器,则直接使用