我必须在android studio中将列表视图转换为pdf
我已经将列表视图数据转换为位图数组,现在需要一个函数来创建pdf,其中包含列表视图数据。此外,当我按下创建pdf按钮时,我需要该pdf自动打开。我需要这个从android棒棒糖开始工作。让我知道我需要添加哪些库。我在网上尝试了很多方法,但一次都不管用,请帮忙。这是我的密码:我必须在android studio中将列表视图转换为pdf,android,Android,我已经将列表视图数据转换为位图数组,现在需要一个函数来创建pdf,其中包含列表视图数据。此外,当我按下创建pdf按钮时,我需要该pdf自动打开。我需要这个从android棒棒糖开始工作。让我知道我需要添加哪些库。我在网上尝试了很多方法,但一次都不管用,请帮忙。这是我的密码: public class ViewListContents extends AppCompatActivity implements View.OnClickListener { DatabaseHelper myDB;
public class ViewListContents extends AppCompatActivity implements View.OnClickListener {
DatabaseHelper myDB;
ArrayList<User> userList;
ListView listView;
User user;
Button btnExport;
public static int REQUEST_PERMISSIONS = 1;
boolean boolean_permission;
boolean boolean_save;
Bitmap bitmap;
ProgressDialog progressDialog;
LinearLayout pdflayout_ll;
List<Bitmap> bmps;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.viewcontents_layout);
myDB = new DatabaseHelper(this);
userList = new ArrayList<>();
btnExport=(Button) findViewById(R.id.btnExport);
Cursor data = myDB.getListContents();
int numRows = data.getCount();
if(numRows == 0){
Toast.makeText(ViewListContents.this,"The Database is empty :(.",Toast.LENGTH_LONG).show();
}else{
int i=0;
while(data.moveToNext()){
user = new User(data.getString(1),data.getString(2),data.getString(3),data.getString(4));
userList.add(i,user);
System.out.println(data.getString(1)+" "+data.getString(2)+" "+data.getString(3)+" "+data.getString(4));
System.out.println(userList.get(i).getCategory());
i++;
}
FourColumn_ListAdapter adapter = new FourColumn_ListAdapter(this,R.layout.list_adapter_view, userList);
listView = findViewById(R.id.listView);
listView.setAdapter(adapter);
}
// init();
pdflayout_ll = findViewById(R.id.ll_pdflayout);
fn_permission(); // permission check
listener(); // button click call
}
private void listener(){
btnExport.setOnClickListener(this);
}
@Override
public void onClick(View view) {
progressDialog = new ProgressDialog(ViewListContents.this);
progressDialog.setMessage("Please wait");
ListAdapter adapter = listView.getAdapter();
int itemscount = adapter.getCount();
int allitemsheight = 0;
bmps = new ArrayList<Bitmap>();
for (int i = 0; i < itemscount; i++) {
View childView = adapter.getView(i, null, listView);
childView.measure(View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
childView.layout(0, 0, childView.getMeasuredWidth(), childView.getMeasuredHeight());
childView.setDrawingCacheEnabled(true);
childView.buildDrawingCache();
bmps.add(childView.getDrawingCache());
allitemsheight+=childView.getMeasuredHeight();
}
Bitmap bigbitmap = Bitmap.createBitmap(listView.getMeasuredWidth(), allitemsheight, Bitmap.Config.ARGB_8888);
Canvas bigcanvas = new Canvas(bigbitmap);
Paint paint = new Paint();
int iHeight = 0;
for (int i = 0; i < bmps.size(); i++) {
Bitmap bmp = bmps.get(i);
bigcanvas.drawBitmap(bmp, 0, iHeight, paint);
iHeight+=bmp.getHeight();
bmp.recycle();
bmp=null;
}
bitmap = bigbitmap;
// bitmap = loadBitmapFromView(findViewById(R.id.listView), pdflayout_ll.getWidth(), pdflayout_ll.getHeight());
//bitmap = loadBitmapFromView(listView, listView.getWidth(), listView.getHeight());
//bitmap = loadBitmapFromView(listView, 100, 100);
createPdf();
}
//@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void createPdf() throws IOException {
}
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics displaymetrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
float hight = displaymetrics.heightPixels ;
float width = displaymetrics.widthPixels ;
int convertHighet = (int) hight, convertWidth = (int) width;
// Resources mResources = getResources();
// Bitmap bitmap = BitmapFactory.decodeResource(mResources, R.drawable.screenshot);
try {
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(convertWidth, convertHighet, 1).create();
PdfDocument.Page page = document.startPage(pageInfo);
Canvas canvas = page.getCanvas();
Paint paint = new Paint();
canvas.drawPaint(paint);
//bitmap = Bitmap.createScaledBitmap(bitmap, convertHighet, convertWidth, true);
paint.setColor(Color.YELLOW);
canvas.drawBitmap(bitmap, 0, 0, null);
document.finishPage(page);
// write the document content
String targetPdf = "/sdcard/test1.pdf";
File filePath = new File(targetPdf);
try {
document.writeTo(new FileOutputStream(filePath));
btnExport.setText("CREATE PDF");
boolean_save=true;
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Something wrong: " + e.toString(), Toast.LENGTH_LONG).show();
}
// close the document
document.close();
}
catch (Exception ex)
{
Log.e("DEBUG PDF", "Exception: " + ex.toString());
}
}
public static Bitmap loadBitmapFromView(View v, int width, int height) {
Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.draw(c);
return b;
}
private void fn_permission() {
if ((ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)||
(ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
if ((ActivityCompat.shouldShowRequestPermissionRationale(ViewListContents.this, android.Manifest.permission.READ_EXTERNAL_STORAGE))) {
} else {
ActivityCompat.requestPermissions(ViewListContents.this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_PERMISSIONS);
}
if ((ActivityCompat.shouldShowRequestPermissionRationale(ViewListContents.this, Manifest.permission.WRITE_EXTERNAL_STORAGE))) {
} else {
ActivityCompat.requestPermissions(ViewListContents.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_PERMISSIONS);
}
} else {
boolean_permission = true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_PERMISSIONS) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
boolean_permission = true;
} else {
Toast.makeText(getApplicationContext(), "Please allow the permission", Toast.LENGTH_LONG).show();
}
}
}
}
公共类ViewListContents扩展AppCompatActivity实现View.OnClickListener{
数据库助手myDB;
ArrayList用户列表;
列表视图列表视图;
用户;
按钮btnExport;
公共静态int请求_权限=1;
布尔权限;
布尔保存;
位图;
进行对话进行对话;
线性布局pdflayout ll;
列出BMP;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.viewcontents\u布局);
myDB=新数据库助手(此);
userList=newarraylist();
btnExport=(按钮)findViewById(R.id.btnExport);
游标数据=myDB.getListContents();
int numRows=data.getCount();
如果(numRows==0){
Toast.makeText(ViewListContents.this,“数据库为空:(.”,Toast.LENGTH_LONG).show();
}否则{
int i=0;
while(data.moveToNext()){
user=新用户(data.getString(1)、data.getString(2)、data.getString(3)、data.getString(4));
添加(i,用户);
System.out.println(data.getString(1)+“”+data.getString(2)+“”+data.getString(3)+“”+data.getString(4));
System.out.println(userList.get(i.getCategory());
i++;
}
FourColumn_ListAdapter=新的FourColumn_ListAdapter(这个,R.layout.list_adapter_视图,用户列表);
listView=findViewById(R.id.listView);
setAdapter(适配器);
}
//init();
pdflayout\u ll=findviewbyd(R.id.ll\u pdflayout);
fn_permission();//权限检查
listener();//按钮单击调用
}
私有void侦听器(){
btnExport.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图){
progressDialog=新建progressDialog(ViewListContents.this);
progressDialog.setMessage(“请稍候”);
ListAdapter=listView.getAdapter();
int itemscont=adapter.getCount();
int-allitemsheight=0;
bmps=新的ArrayList();
对于(int i=0;i