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(); }更多推荐
发布评论