【问题标题】:AsyncTask with ListViewAsyncTask 与 ListView
【发布时间】:2013-08-20 19:52:58
【问题描述】:

我在我的应用程序中使用 customListAdapter(扩展 BaseAdapter)。我在 ListFragment 中使用了这个适配器。

对于原型设计,我在字符串数组中硬编码了一些值,并使用这些值来填充列表。我正在覆盖 getView 并在充气后返回视图。

现在我需要从我的 Web 服务调用中获取一些数据,我计划在 AsyncTask 中执行这些操作。

推荐的方法是什么?

当前代码(伪)

public class customListAdapter extends BaseAdapter {

  @Override
  public View getView(int position, View MyconvertView, ViewGroup parent) {

    // Inflating view 
    // Other view operations
    return MyconvertView;
  }

  class SomeTask extends AsyncTask<params,progress ,Result > {

  @Override
  protected View doInBackground(... params) {
  }


  @Override
        protected void onPostExecute(View result) {

        }
  }
 }
}

需要修改:

选项1:

  @Override
  public View getView(int position, View MyconvertView, ViewGroup parent) {

    // Inflating view 
    // Other view operations

    return new SomeTask.execute(); // should return the view , the onPostExecute of SomeTask should return this. 
  }

选项 2:

请提出建议。

【问题讨论】:

  • new SomeTask.execute() 不返回视图。你的 asynctask 是做什么的?
  • 我只是在写伪代码,如果我让 onPostExecute 返回一个视图,它应该可以正常工作吗?
  • 不,你不能。你不能返回值。但您的退货声明必须是一个视图。我很好奇你的 asynctask 做了什么。您的 asynctask 是适配器类的内部类还是不同的类?
  • @Raghunandan 我实际上想知道我应该在哪里处理我的网络服务调用。以及我应该如何将处理后的数据传递给查看。我的想法是处理 asyncTask,获取数据,膨胀视图,然后重新运行视图。这是正确的方法吗?
  • getView:检查视图是否已经加载(在某处保存引用)并返回它,否则视图存根/加载图像/... - onPostExecute:使用数据创建视图,将视图保存到引用,notifyDataSetChanged . - ?

标签: android


【解决方案1】:

在Async Task的PostExecute方法中,调用方法

list.setAdapter(data);

所以当你得到所有数据时,它会被设置在列表中..

【讨论】:

  • 因为 AsyncTask 从不返回任何值
猜你喜欢
  • 1970-01-01
  • 2016-03-02
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
相关资源
最近更新 更多