我有一个应用程序从相机中获取图像,然后将它们存储在一个文件夹中,路径存储在SQLite数据库中,随后显示在Listview中,但是当我滚动时,ListView的移动速度非常慢。
Android监视器向我显示以下消息
应用程序可以在主线程上做太多工作。
我已经读过做AsyncTask问题解决了,我想知道如何使用AsyncTask获取图像的路径。
这是我的代码
public class PropiedadCursorAdapter extends CursorAdapter{
private PropiedadDbAdapter dbAdapter =null;
public PropiedadCursorAdapter (Context context, Cursor c){
super(context, c);
dbAdapter = new PropiedadDbAdapter(context);
dbAdapter.abrir();
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view =((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.layout_lista_propiedades,parent,false);
ViewHolder holder = new ViewHolder();
holder.ivCasa = (ImageView) view.findViewById(R.id.ivCasa);
holder.tvTitulo= (TextView) view.findViewById(R.id.tv_titulo);
holder.tvUbicacion= (TextView) view.findViewById(R.id.tv_ubicacion);
view.setTag(holder);
return view;
}
static class ViewHolder {
ImageView ivCasa;
TextView tvTitulo;
TextView tvUbicacion;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
String cadena = cursor.getString(cursor.getColumnIndex(PropiedadDbAdapter.C_COLUMNA_IMAGENES));
Picasso.with(context).load(cadena).into(holder.ivCasa);
holder.tvUbicacion.setText(cursor.getString(cursor.getColumnIndex(PropiedadDbAdapter.C_COLUMNA_DESCRIPCION)));
holder.tvTitulo.setText(cursor.getString(cursor.getColumnIndex(PropiedadDbAdapter.C_COLUMNA_TITULO)));
}}
这是我的AsyncTask
public class getImageTask extends AsyncTask<PropiedadCursorAdapter.ViewHolder, Void, Bitmap> {
private PropiedadCursorAdapter.ViewHolder v;
@Override
protected Bitmap doInBackground(PropiedadCursorAdapter.ViewHolder... params) {
v = params[0];
return null;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
String cadena = PropiedadDbAdapter.C_COLUMNA_IMAGENES;
} }
由于
答案 0 :(得分:0)
你不应该在bindView数据采集中进入适配器,但是应该请求完整的数据初始化,然后存储在Bean的包中,然后设置为Adapter,这样速度会快得多。