如何在 AsyncTask 类方法中更新列表的文本视图?
Posted
技术标签:
【中文标题】如何在 AsyncTask 类方法中更新列表的文本视图?【英文标题】:How to update textviews of list inside AsyncTask class method? 【发布时间】:2015-03-30 01:33:17 【问题描述】:坚持这一点。 我有 FirstAsyncTask
更新数组 arr
[]
我正在使用另一个 ImageAdapter
更新图像。详情请看代码
我想更新列表的每个文本视图。以下代码更新图像视图但不更新文本视图。我想用 arr
[] 设置这个 textview 的文本,我在 中更新了
我在FirstAsyncTask
的onPostExecute
中使用以下代码:
ListAdapter adapter = new SimpleAdapter(MainActivity.this, dataList,
R.layout.list_item, arr, new int[] R.id.name,
R.id.email, R.id.mobile );
setListAdapter(Ladapter);
//HOW TO UPDATE TEXTVIEW WITH ARRAY arr[]?????
list=(ListView)findViewById(android.R.id.list);
// Create custom adapter for listview
adapter=new ImageAdapter(MainActivity.this, msStringS);//updater of images
//Set adapter to listview
list.setAdapter(adapter);
【问题讨论】:
谁能给我这个案例的CustomList适配器代码?请 【参考方案1】:我们可以使用 runOnUiThread 概念更新 doInBackground() 中的 UserInterface。但这是不好的做法。正如山姆所说,请在 onPostExe 中更新用户接口,这将提供流畅的交互。
否则你可以使用runOnUiThread by
Sample.this.runOnThrea.. public void run() .在此处更新用户界面。
【讨论】:
你能给我用数组或数组列表更新textview的代码吗?在 run() 中被执行?? 你的意思是更新视图的整个代码。如果是这样,那么我怎么知道 textview 对象。【参考方案2】:在AsyncTask类的postExecute方法中做
在 doInBackground() 之后,返回要填充列表的对象。
这将被传递给 onPostExecute() 并且您可以在那里初始化列表适配器。
private class LoadList extends AsyncTask<Void, Void, List<String>>
@Override protected List<String> doInBackground(Void... params)
ArrayList<String> listContents = new ArrayList<String>();
listContents.add("Item one");
listContents.add("Item two");
listContents.add("Item three");
return listContents;
@Override protected void onPostExecute(List<String> listContents)
ListAdapter adapter = new SimpleAdapter(MainActivity.this, listContents,
R.layout.list_item, arr, new int[] R.id.name,
R.id.email, R.id.mobile );
mListView.setAdapter(adapter);
【讨论】:
它与我使用的代码相同。 setListAdapter() 没有设置我的文本视图。 setListAdapter 只有在扩展 ListActivity 或 ListFragment 时才有效。我修改了我的答案,试试看:mListView.setAdapter(adapter);以上是关于如何在 AsyncTask 类方法中更新列表的文本视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AsyncTask 中更新 ArrayList 的内容?
在 Android 中,如何从 AsyncTask 更改 TextView? [复制]
在 Asynctask 的 onPostExecute() 方法中更改片段
从 Asynctask 更新 MainActivity 上的 ListView