gpt4 book ai didi

android - 将 ListView 项转换为单个位图图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:50 25 4
gpt4 key购买 nike

引用了这个话题:Android get screenshot of all ListView items

我想做类似的事情,但我有自定义适配器,它在这段代码处抛出 NullPointerException 错误:

childView.measure(MeasureSpec.makeMeasureSpec(_listView.getWidth(),    MeasureSpec.EXACTLY),MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

我的自定义适配器:

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;


}

}

我的自定义行:

<?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>

感谢您的帮助。

最佳答案

您可以像这样从任何 View 获取位图:

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;
}

关于android - 将 ListView 项转换为单个位图图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19514174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com