使用设备存储中的图像在listview中填充imageview

时间:2018-03-12 12:47:43

标签: android listview bitmap

我有一个应用程序,我可以添加许多产品,每个产品都有一个图像。我将所有图像存储到存储中的固定路径。我的问题是,当我将所有产品加载到列表视图中时,需要花费太多时间来解码路径中的所有图像。我正在使用自定义适配器。

我的适配器

public class MyAdapter extends BaseAdapter {

    @Override
    public int getCount() {
        return planList.size();
    }
    @Override
    public Object getItem(int position) {
        return planList.get(position);
    }
    @Override
    public long getItemId(int position) {
        return 0;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ProductsModel db_data = planList.get(position);

        if (convertView == null) {
            convertView = View.inflate(getApplicationContext(), R.layout.product_list, null);
        }
        ImageView btn1 = (ImageView) convertView.findViewById(R.id.imageView);
        TextView name = (TextView) convertView.findViewById(R.id.name);
        TextView stock = (TextView) convertView.findViewById(R.id.stock);
        TextView amount = (TextView) convertView.findViewById(R.id.amount);

        name.setText(db_data.getName());
        stock.setText(db_data.getStock());
        amount.setText(db_data.getSprice());

        try{
            Bitmap bm = BitmapFactory.decodeFile(db_data.getImage());
            if (bm != null) {
                btn1.setImageBitmap(bm);
            } else {
                btn1.setImageResource(R.drawable.photo);
            }
        }catch (Exception e) {

            btn1.setImageResource(R.drawable.photo);
        }
        return convertView;
    }
}

当我单击按钮显示列表视图中的所有项目时,启动列表视图活动需要太多时间。 我发现“BitmapFactory.decodeFile(db_data.getImage());”更耗时。 如何更有效地从图像路径中填充ListView项目中的ImageView。

1 个答案:

答案 0 :(得分:3)