配置build.gradle文件:
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.android.support:cardview-v7:26.1.0'
然后是两个布局文件:
显示的界面:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
LinearLayout>
填充的页面:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/qr"
android:layout_width="match_parent"
android:layout_height="100dp"
android:scaleType="centerCrop"
app:srcCompat="@mipmap/ic_launcher" />
<TextView
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="5dp"
android:textSize="16sp"
/>
LinearLayout>
android.support.v7.widget.CardView>
然后是类的定义以及适配器的书写:
这里是我的类:
package com.example.qr_code;
import org.litepal.crud.DataSupport;
/**
* Created by 浩哥 on 2017/12/14.
*/
public class QR extends DataSupport{
private String ImageId;
private String name;
public String getImageId() {
return ImageId;
}
public void setImageId(String imageId) {
ImageId = imageId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这里是适配器,添加了一下图片的长按监听和普通监听:
package com.example.qr_code;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Vibrator;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import org.litepal.crud.DataSupport;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
/**
* Created by 浩哥 on 2017/12/14.
*/
public class QR_Adapter extends RecyclerView.Adapter.ViewHolder> {
private List mQRlist;
static class ViewHolder extends RecyclerView.ViewHolder{
ImageView imageView;
TextView textView;
public ViewHolder(View v)
{
super(v);
imageView=(ImageView) ((CardView) v).findViewById(R.id.qr);
textView=(TextView) ((CardView) v).findViewById(R.id.add);
}
}
public QR_Adapter(List QRList)
{
mQRlist=QRList;
}
public ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType)
{
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.qr_item,parent,false);
final ViewHolder holder=new ViewHolder(view);
holder.imageView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
final int position=holder.getAdapterPosition();
QR qr=mQRlist.get(position);
Vibrator vib = (Vibrator) parent.getContext().getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(95);
AlertDialog.Builder dialog=new AlertDialog.Builder(parent.getContext());
dialog.setTitle("确定删除该记录吗?");
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
QR qr=mQRlist.get(position);
DataSupport.deleteAll(QR.class,"ImageId=?",qr.getImageId());
for(int i = 0; i < mQRlist.size(); i++)
{
if(mQRlist.get(i).getImageId().equals(qr.getImageId()))
{
mQRlist.remove(i);
i--;
}
}
notifyDataSetChanged();
}
});
dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.show();
return true;
}
});
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int position=holder.getAdapterPosition();
QR qr=mQRlist.get(position);
Intent intent=new Intent(parent.getContext(),testSaveActivity.class);
intent.putExtra("imageId",qr.getImageId());
intent.putExtra("name",qr.getName());
parent.getContext().startActivity(intent);
}
});
return holder;
}
public void onBindViewHolder(ViewHolder viewHolder,int position)
{
QR qr=mQRlist.get(position);
Bitmap bitmap= BitmapFactory.decodeFile(qr.getImageId());
viewHolder.textView.setText(qr.getName());
viewHolder.imageView.setImageBitmap(bitmap);
}
public int getItemCount()
{
return mQRlist.size();
}
}
最后就是显示了 :
package com.example.qr_code;
import android.os.Environment;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.Log;
import android.widget.Toast;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
import java.util.List;
public class Saved_QR_Activity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
private List qrList;
private QR_Adapter adapter;
private final static String ALBUM_PATH
= Environment.getExternalStorageDirectory() + "/qr_image/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saved__qr_);
init();
int count=qrList.size();
String c=Integer.toString(count);
Toast.makeText(this, c, Toast.LENGTH_SHORT).show();
RecyclerView recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
StaggeredGridLayoutManager layoutManager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
adapter=new QR_Adapter(qrList);
recyclerView.setAdapter(adapter);
}
private void init()
{
qrList=DataSupport.findAll(QR.class);
}
}
这里我设置的是显示两列。