【问题标题】:How to update textviews of list inside AsyncTask class method?如何在 AsyncTask 类方法中更新列表的文本视图?
【发布时间】:2015-03-30 01:33:17
【问题描述】:

坚持这一点。
我有 FirstAsyncTask 更新数组 arr[]
我正在使用另一个 ImageAdapter 更新图像。详情请看代码
我想更新列表的每个文本视图。以下代码更新图像视图但不更新文本视图。我想用 arr[] 设置这个 textview 的文本,我在
中更新了 我在FirstAsyncTaskonPostExecute 中使用以下代码:

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适配器代码?请

标签: android listview android-asynctask textview


【解决方案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);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多