自定义adapterView多次调用getView函数并更新列表视图,这会导致应用程序速度变慢

时间:2015-03-04 07:26:46

标签: java android android-listview android-asynctask listadapter

我有一个自定义adpter,它有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的其他选项吗?

1 个答案:

答案 0 :(得分:1)

您是否可以设计应用程序以使用单个api调用从解析中获取数据,而不是每个行元素的每个调用? (单个api调用从解析中获取所有数据或一次获取前x行数据)。

然后创建一些模型来存储获取的数据以及来自解析的响应。在此之后迭代适配器。