【发布时间】: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