AsyncTask和listActivity(AsyncTask and listActivity)

系统教程 行业动态 更新时间:2024-06-14 16:59:47
AsyncTask和listActivity(AsyncTask and listActivity)

我已经做了这个简单的应用程序,在这个应用程序中,当我点击开始按钮我想在Listview看到数据,但它不起作用。 你可以帮我吗?

mainActivity.java

public class MainActivity extends ListActivity { public ArrayList<Map<String, String>> list= new ArrayList<Map<String, String>>(); public ListAdapter adapter; public ProgressDialog progressDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button buttonAggiorna = (Button) findViewById(R.id.buttonStart); buttonAggiorna.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String[] from = { "name", "purpose" }; int[] to = { android.R.id.text1, android.R.id.text2 }; adapter = new SimpleAdapter(MainActivity.this, list,android.R.layout.simple_list_item_2, from, to); progressDialog = ProgressDialog.show(MainActivity.this, "Getting data", "Loading..."); taskBack t=new taskBack(); t.execute(); } });// fine onClickListner Button buttonAllarm = (Button) findViewById(R.id.buttonAllarm); buttonAllarm.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { AppLog.logString("list size:"+list.size()); } }); } private class taskBack extends AsyncTask<Void, Void, ArrayList<Map<String, String>>> { @Override protected ArrayList<Map<String, String>> doInBackground(Void... arg0) { ArrayList<Map<String, String>> l = new ArrayList<Map<String, String>>(); l = startEla(); return l; } protected void onPostExecute(ArrayList<Map<String, String>> result) { AppLog.logString("Parte onPostExecute"); list=result; setListAdapter(adapter); progressDialog.dismiss(); } private ArrayList<Map<String, String>> startEla() { ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>(); list.add(putData("android","mobile")); list.add(putData("Windows7", "Windows7")); list.add(putData("iPhone", "iPhone")); return list; } private Map<String, String> putData(String name, String purpose) { HashMap<String, String> item = new HashMap<String, String>(); item.put("name", name); item.put("purpose", purpose); return item; } } }

在此链接中,您可以在此处看到xml文件输入链接描述

最好的注册A.

I have do this simple app, in this app when I click on start button I want to see the data in Listview, but it does't work. Can you help me?

mainActivity.java

public class MainActivity extends ListActivity { public ArrayList<Map<String, String>> list= new ArrayList<Map<String, String>>(); public ListAdapter adapter; public ProgressDialog progressDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button buttonAggiorna = (Button) findViewById(R.id.buttonStart); buttonAggiorna.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String[] from = { "name", "purpose" }; int[] to = { android.R.id.text1, android.R.id.text2 }; adapter = new SimpleAdapter(MainActivity.this, list,android.R.layout.simple_list_item_2, from, to); progressDialog = ProgressDialog.show(MainActivity.this, "Getting data", "Loading..."); taskBack t=new taskBack(); t.execute(); } });// fine onClickListner Button buttonAllarm = (Button) findViewById(R.id.buttonAllarm); buttonAllarm.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { AppLog.logString("list size:"+list.size()); } }); } private class taskBack extends AsyncTask<Void, Void, ArrayList<Map<String, String>>> { @Override protected ArrayList<Map<String, String>> doInBackground(Void... arg0) { ArrayList<Map<String, String>> l = new ArrayList<Map<String, String>>(); l = startEla(); return l; } protected void onPostExecute(ArrayList<Map<String, String>> result) { AppLog.logString("Parte onPostExecute"); list=result; setListAdapter(adapter); progressDialog.dismiss(); } private ArrayList<Map<String, String>> startEla() { ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>(); list.add(putData("android","mobile")); list.add(putData("Windows7", "Windows7")); list.add(putData("iPhone", "iPhone")); return list; } private Map<String, String> putData(String name, String purpose) { HashMap<String, String> item = new HashMap<String, String>(); item.put("name", name); item.put("purpose", purpose); return item; } } }

In this link you can see the xml file enter link description here

Best Regads A.

最满意答案

将这两行移动到ListActivity主体......

String[] from = { "name", "purpose" }; int[] to = { android.R.id.text1, android.R.id.text2 };

从onCreate(...)的onClick(...)侦听器中删除以下行...

adapter = new SimpleAdapter(MainActivity.this, list, android.R.layout.simple_list_item_2, from, to);

...并将其放在AsyncTask的onPostExecute(...)方法中,如下所示......

protected void onPostExecute(ArrayList<Map<String, String>> result) { AppLog.logString("Parte onPostExecute"); list=result; adapter = new SimpleAdapter(MainActivity.this, list, android.R.layout.simple_list_item_2, from, to); setListAdapter(adapter); progressDialog.dismiss(); }

Move these two lines to the main body of the ListActivity...

String[] from = { "name", "purpose" }; int[] to = { android.R.id.text1, android.R.id.text2 };

Remove the following line from the onClick(...) listener in onCreate(...)...

adapter = new SimpleAdapter(MainActivity.this, list, android.R.layout.simple_list_item_2, from, to);

...and put it in the onPostExecute(...) method of the AsyncTask as follows...

protected void onPostExecute(ArrayList<Map<String, String>> result) { AppLog.logString("Parte onPostExecute"); list=result; adapter = new SimpleAdapter(MainActivity.this, list, android.R.layout.simple_list_item_2, from, to); setListAdapter(adapter); progressDialog.dismiss(); }

更多推荐

本文发布于:2023-04-17 09:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/dzcp/122af5c3fb5ef6644fc7f38d7378421d.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:AsyncTask   listActivity

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!