本文介绍了将Listview项目转换为单个位图图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
参考本主题: Android获取所有ListView项目的屏幕截图
我想做类似的事情,但是我有自定义适配器",它在此代码处抛出NullPointerException错误:
I want to do something like that but i have Custom Adapter and it's throw me NullPointerException Error at this code:
childView.measure(MeasureSpec.makeMeasureSpec(_listView.getWidth(), MeasureSpec.EXACTLY),MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
我的自定义适配器:
My Custom Adapter:
public class InvoiceListAdapter extends BaseAdapter {
ArrayList<Object> _itemList;
public Activity _context;
public LayoutInflater _inflater;
BarCodeGenerator Generator = new BarCodeGenerator();
public InvoiceListAdapter(Activity context,ArrayList<Object> itemList)
{
super();
this._context=context;
this._itemList=itemList;
this._inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return _itemList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return _itemList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder
{
TextView ProductName;
TextView Qnt;
ImageView Barcode;
TextView BarcodeFormat;
Button Del;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView==null)
{
holder = new ViewHolder();
convertView = _inflater.inflate(R.layout.custom_row_view, null);
holder.ProductName = (TextView) convertView.findViewById(R.id.txt_CRow_ProdName);
holder.Qnt = (TextView) convertView.findViewById(R.id.txt_CRow_Qnt);
holder.Del = (Button) convertView.findViewById(R.id.btn_CRow_Delete);
holder.Barcode = (ImageView) convertView.findViewById(R.id.Img_CRow_Barcode);
/*-----------------------------Deleting Item with Button--------------------*/
holder.Del.setTag(holder);
convertView.setTag(holder);
}
else
{
holder=(ViewHolder)convertView.getTag();
}
AnItem Item = (AnItem) _itemList.get(position);
holder.ProductName.setText(Item.getProductName());
holder.Qnt.setText(Item.getQnt());
holder.Barcode.setImageBitmap(Generator.Generate(Item.getProductName(), BarcodeFormat.valueOf(Item.getBarcode() ),500,200 ) );
holder.Del.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(_context,"Item Deleted!: "+position, Toast.LENGTH_SHORT).show();
_itemList.remove(position);
notifyDataSetChanged();
// TODO Auto-generated method stub
}
});
return convertView;
}
}
我的自定义行:
My Custom Row:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/txt_CRow_ProdName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/ProductName"
android:textSize="16sp"
android:textStyle="bold" />
<Button
android:id="@+id/btn_CRow_Delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:focusable="false"
android:text="@string/Delete"
android:textSize="12sp"/>
<TextView
android:id="@+id/txt_CRow_Qnt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Img_CRow_Barcode"
android:hint="@string/Qnt"
android:textSize="12sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/Img_CRow_Barcode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_CRow_ProdName"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/btn_CRow_Delete"
android:layout_alignParentLeft="true"
/>
</RelativeLayout>
感谢您的帮助.
推荐答案
您可以从任何这样的视图中获取位图:
You can get the bitmap from any view like this :
public static Bitmap getBitmapFromView(View view) {
Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
Drawable bgDrawable = view.getBackground();
if (bgDrawable != null)
bgDrawable.draw(canvas);
else
canvas.drawColor(Color.WHITE);
view.draw(canvas);
return returnedBitmap;
}
这篇关于将Listview项目转换为单个位图图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!