gpt4 book ai didi

android - 异步更新后更新 Android Listview

转载 作者:太空狗 更新时间:2023-10-29 15:53:51 24 4
gpt4 key购买 nike

我正在将我的 HTTP 调用从同步调用转换为异步调用。因为连接在后台运行,所以当我最初设置列表适配器时数据不存在。如何让列表适配器在我的 HTTP 调用后更新?我已经尝试了一些方法,比如在数据被发回之前不设置适配器并再次设置适配器,但没有任何效果。这是我当前的 oncreate 代码

protected void onCreate(Bundle savedInstanceState) {
overridePendingTransition(R.layout.anim_out,R.layout.anim_in);
setTheme(R.style.Theme_D_theme);
setContentView(R.layout.news_fragment);
super.onCreate(savedInstanceState);

text = (TextView) this.findViewById(R.id.nomore);
list = (ListView) this.findViewById(R.id.newslist);
list.setDividerHeight(2);

new MyAsyncTask().execute("THIS");



list.setOnItemClickListener(this);
list.setCacheColorHint(Color.WHITE);
adapter = new SimpleAdapter(this, x, R.layout.drill1_listview,
new String[] {"title","content","distance", "image"},
new int[] {R.id.title, R.id.content, R.id.distance, R.id.image} );

}

还有我的 AsyncTast

private class MyAsyncTask extends AsyncTask<String, Integer, Double>{

@Override
protected Double doInBackground(String... params) {
// TODO Auto-generated method stub
postData(params[0]);
return null;
}

protected void onPostExecute(Double result){
//pb.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), "command sent", Toast.LENGTH_LONG).show();
}
protected void onProgressUpdate(Integer... progress){
//pb.setProgress(progress[0]);
}

public void postData(String valueIWantToSend) {


ThreadPolicy tp = ThreadPolicy.LAX;
StrictMode.setThreadPolicy(tp);

HttpClient httpclient = new DefaultHttpClient();
String type = getIntent().getExtras().getString("type");
HttpGet httppost = new HttpGet("http://myip.../all?latitude=42.12345&longitude=-76.2154");



InputStream inputStream = null;
try {
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String JSONstring = EntityUtils.toString(entity);
Log.w("HTTPRESPONSE", JSONstring);

//Toast.makeText(this, JSONstring, Toast.LENGTH_SHORT).show();

if (!(JSONstring.equals(" 0"))) {




JSONArray array = new JSONArray(JSONstring);
for (int i = 0; i < array.length(); i++) {
JSONObject row = array.getJSONObject(i);
HashMap<String,String> temp = new HashMap<String,String>();




String thisid = row.getString("id");
ider.add(thisid);

String starthold = row.getString("start_time");
start.add(starthold);

String endhold = row.getString("end_time");
end.add(endhold);

String latitudehold = row.getString("latitude");
latitude.add(latitudehold);

String longitudehold = row.getString("longitude");
longitude.add(longitudehold);

String addresshold = row.getString("street");
address.add(addresshold);

String title = row.getString("company");
company.add(title);
temp.put("title", title);

String distance_hold = row.getString("distance");
distance.add(distance_hold);
temp.put("distance", distance_hold);


int[] images = new int[] { R.drawable.local_eat,R.drawable.local_eat,
R.drawable.local_drink, R.drawable.local_shop,
R.drawable.local_do, R.drawable.local_chance,
R.drawable.local_all };

String image = row.getString("promo_type");
temp.put("image", Integer.toString(images[Integer.valueOf(image)]));

String description = row.getString("name");
name.add(description);
temp.put("content", description);

x.add(temp);

}


}
} catch (Exception e) {
// Oops
} finally {
try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
}


}

}

最佳答案

在执行后添加这一行。最后。

x.add(temp);
adapter.notifyDataSetChanged();

关于android - 异步更新后更新 Android Listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19042621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com