Android 将listview适配器更改为recycler视图适配器
当我将图像从SD卡加载到ListView时,它开始滞后。我不能流畅地滚动。所以,我决定使用“回收者”视图,也许还有毕加索。我面临的唯一问题是,ListView适配器不能与RecyclerView一起工作 如何重写以下代码/适配器以使用RecyclerView 祝你新年快乐,万事如意Android 将listview适配器更改为recycler视图适配器,android,android-listview,adapter,android-adapter,android-recyclerview,Android,Android Listview,Adapter,Android Adapter,Android Recyclerview,当我将图像从SD卡加载到ListView时,它开始滞后。我不能流畅地滚动。所以,我决定使用“回收者”视图,也许还有毕加索。我面临的唯一问题是,ListView适配器不能与RecyclerView一起工作 如何重写以下代码/适配器以使用RecyclerView 祝你新年快乐,万事如意 public class Saveditems extends BaseActivity { ArrayList<String> f = new ArrayList<>();// list
public class Saveditems extends BaseActivity {
ArrayList<String> f = new ArrayList<>();// list of file paths
File[] listFile;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.saveditems);
activateToolbarWithHomeEnabled().setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
getFromSdcard();
RecyclerView imagelist = (RecyclerView) findViewById(R.id.PhoneImageGrid);
ImageAdapter imageAdapter = new ImageAdapter();
imagelist.setAdapter(imageAdapter); //error
//image adapter cannot be applied to recycler view
}
public void getFromSdcard() {
File file = new File(Environment.getExternalStorageDirectory() + "/FlickrBrowser");
if (file.isDirectory()) {
listFile = file.listFiles();
for (File aListFile : listFile) {
f.add(aListFile.getAbsolutePath());
}
}
}
public class ImageAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public ImageAdapter() {
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return f.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
@SuppressLint("InflateParams")
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(
R.layout.galleryitem, null);
holder.imageview = (ImageView) convertView.findViewById(R.id.thumbImage);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Bitmap myBitmap = BitmapFactory.decodeFile(f.get(position));
holder.imageview.setImageBitmap(myBitmap);
return convertView;
}
}
class ViewHolder {
ImageView imageview;
}}
公共类Saveditems扩展了BaseActivity{
ArrayList f=new ArrayList();//文件路径列表
文件[]列表文件;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.saveditems);
activateToolbarWithHomeEnabled().setNavigationOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图v){
完成();
}
});
getFromSdcard();
RecyclerView imagelist=(RecyclerView)findViewById(R.id.PhoneImageGrid);
ImageAdapter ImageAdapter=新的ImageAdapter();
imagelist.setAdapter(imageAdapter);//错误
//图像适配器无法应用于回收器视图
}
public void getFromSdcard(){
File File=新文件(Environment.getExternalStorageDirectory()+“/FlickrBrowser”);
if(file.isDirectory()){
listFile=file.listFiles();
对于(文件aListFile:listFile){
f、 添加(aListFile.getAbsolutePath());
}
}
}
公共类ImageAdapter扩展了BaseAdapter{
私人停车场;
公共映像适配器(){
mInflater=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
}
public int getCount(){
返回f.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
@SuppressLint(“充气参数”)
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
holder=新的ViewHolder();
convertView=mInflater.充气(
R.layout.galleryitem,空);
holder.imageview=(imageview)convertView.findViewById(R.id.thumbImage);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
Bitmap myBitmap=BitmapFactory.decodeFile(f.get(position));
holder.imageview.setImageBitmap(myBitmap);
返回视图;
}
}
类视图持有者{
图像视图图像视图;
}}
公共类ImageAdapter扩展了RecyclerView.Adapter{
清单f;
公共图像适配器(列表){
f=列表;
}
@凌驾
public ImageHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.yourlayout,parent,false);
返回新的图像支架(v);
}
@凌驾
public void onBindViewHolder(最终图像持有人,最终整数位置){
Bitmap myBitmap=BitmapFactory.decodeFile(f.get(position));
holder.imageview.setImageBitmap(myBitmap);
}
公共静态类ImageHolder扩展了RecyclerView.ViewHolder{
图像视图图像视图;
公共图像持有者(查看项目视图){
超级(项目视图);
imageview=(imageview)itemView.findViewById(R.id.yourimageid)
}
}
}
不幸的是,我无法让它工作。阵列列表“f”未在ImageAdapter中定义。请将其传递给ImageAdapter构造函数!谢谢,我试试看。
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageHolder> {
List<String> f;
public ImageAdapter(List<String> list) {
f=list;
}
@Override
public ImageHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.yourlayout, parent, false);
return new ImageHolder(v);
}
@Override
public void onBindViewHolder(final ImageHolder holder, final int position) {
Bitmap myBitmap = BitmapFactory.decodeFile(f.get(position));
holder.imageview.setImageBitmap(myBitmap);
}
public static class ImageHolder extends RecyclerView.ViewHolder {
ImageView imageview;
public ImageHolder(View itemView){
super(itemView);
imageview=(ImageView)itemView.findViewById(R.id.yourimageid)
}
}
}