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