我有一个具有public View getView(int position, View convertView, ViewGroup parent)
方法的自定义适配器。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ObjA obj = mArr.get(position);
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view;
if (convertView == null) {
view = new View(mContext);
view = inflater.inflate(R.layout.grid_view, null);
} else {
view = (View) convertView;
}
// set value into bus_stop_name textView
TextView id_label = (TextView) view.findViewById(R.id.txt_ID);
TextView direction_label = (TextView) view.findViewById(R.id.txt_Direction);
id_label.setText(obj.getId()); // Setting values in view
direction_label.setText(obj.getName());
GetTiming getTiming = new GetTiming(mContext, this, obj.getId(), view);
getTiming.execute();
return view;
}
此GetTiming是AsyncTask,可从Parse.com获取时间。我有将调用
public void onGetTimings(ArrayList<Timing> timings, View view)
方法的接口。@Override
public void onGetTimings(ArrayList<Timing> timings, View view) {
TextView time = (TextView) view.findViewById(R.id.txt_time);
busRouteTime.setText("" + timings.get(0).getTime() + "");
}
此方法多次被调用。表示多个网络呼叫。我还有其他功能也使用Parse.com。由于反复调用此方法,因此应用程序变慢。有人可以建议其他选项来更新listItemView中的textView吗?
最佳答案
您是否可以将应用程序设计为使用单个api调用而不是每个行元素的每次调用从解析中获取数据? (一个API调用即可从解析中获取所有数据,或一次获取前x行数据)。
然后创建一些模型来存储提取的数据以及解析响应。之后,遍历适配器。