大佬教程收集整理的这篇文章主要介绍了Android:如何定期更新ListView?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class SampleAutoupdateList extends Activity { //Autoupdate handler private Handler handler = new Handler(); private Runnable updater = new Runnable() { public void run() { /* * update the list */ try { Log.i("updatE","Handler called"); searchAdapter = getFeed(URL); searchAdapter.notifyDataSetChanged(); handler.postDelayed(this,Configuration.refresH_INTERVAL); } catch(Exception E) { Log.e("updatE ERROR",e.getmessage()); } } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.linearmodE); this.context = this; searchAdapter = getFeed(URL); LinearLayout l2 = (LinearLayout) findViewById(R.id.secondaryLayout); ListView list = new ListView(context); l2.addView(list); // display UI updateDisplay(list); updater.run(); } private SearchAdapter getFeed(String URL) { try { SearchHandler handler = new SearchHandler(); URL url = new URL(URL); String data = convertStreamToString(url.openStream()); data = data.subString(data.indexOf('['),data.length()-1); handler.parseJSON(data); return handler.getFeed(); } catch (Exception eE) { // if we have a problem,simply return null Log.e("getFeed",ee.getmessage()); return null; } } private void updateDisplay(View searchView) { // TODO Auto-generated method stub // TODO Auto-generated method stub searchList = (ListView) searchView; myProgressDialog = ProgressDialog.show(this,"Please wait...","Loading search....",truE); new Thread() { public void run() { try{ Thread.sleep(2000); } catch (Exception E) { } runOnUiThread(new Runnable() { @Override public void run() { if (searchAdapter == null) { Log.e("ERROR","No Feed Available"); return; } searchAdapter.setContext(context); searchList.setAdapter(searchAdapter); searchList.setSELEction(0); } }); // Dismiss the Dialog myProgressDialog.dismiss(); } }.start(); } }
SearchHandler类很简单:
public class SearchHandler extends DefaultHandler { SearchAdapter _adapter; SearchItem _item; public SearchHandler() { } public SearchAdapter getFeed() { return _adapter; } public void parseJSON(String data) { // TODO Auto-generated method stub _adapter = new SearchAdapter(); JSONArray parseArray; try { parseArray = new JSONArray(data); for (int i=0; i < parseArray.length(); i++) { SearchItem item = new SearchItem(); JSONObject jsonUser = parseArray.getJSONObject(i); item.set_from(jsonUser.getString ("from")); item.set_msg(jsonUser.getString("msg")); } } catch (JSONException E) { // TODO Auto-generated catch block e.printStackTrace(); } } }
话虽如此,以下几行似乎特别奇怪:
searchAdapter = getFeed(URL); searchAdapter.notifyDataSetChanged();
我将假设getFeed()(未显示)创建某种新的listadapter.如果getFeed()正在创建一个新的listadapter,则不需要在其上调用notifyDataSetChanged(),因为它的数据集没有改变 – 它是全新的.此外,除非您将此新listadapter与ListView相关联,否则新的listadapter将不起作用.
以上是大佬教程为你收集整理的Android:如何定期更新ListView?全部内容,希望文章能够帮你解决Android:如何定期更新ListView?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。