ListAdapter:填充视图异步,外包查询

时间:2015-06-16 13:44:03

标签: android listadapter android-cursoradapter

我正在使用GridView和CursorAdapter。 GridView中的所有项目都有不同的类型,因此我的数据库查询有很多子查询,速度非常慢。

所以我决定使用一个简单的查询(只选择id)。 所有子查询都应该在CursorAdapter中异步外包,就像这样(虚拟代码)。在异步数据库查询之后,GridView项目会更新。

@Override
public void bindView(View view, Context context, Cursor cursor) {

    long id = cursor.getLong(cursor.getColumnIndex(Columns._ID));
    ViewLoader.queue(id, view);

}

private class ViewLoader {
  public queue(long id, View view) {

    Bitmap bitmap = ... // load bitmap from web by using id
    String title = ... // query title from database  by using id
    String subtitle = ... // query subtitle from database by using id

    TextView titleView = (TextView) view.findViewById(R.id.title);
    titleView.setText(title);
    ...

    // update GridView
}

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我不认为这是最好的方法。 UI和后台线程之间的所有线程切换将使您的工作无法进行。 我使用了一个Cursor,查询了4个表,大约30-40列,它工作正常,我甚至可以说很快。我的观点是,我认为问题在于你的约束力。图像可以而且应该被编码为异步(我使用Picasso,但很多库可以做到这一点)。我的猜测是你从查询开始(尝试将其限制为30行,然后我们使用分页技术加载更多)并通过绑定工作,一切都将完美锻炼。如果我没有解释自己,请自由询问。