将ListView适配器更改为Recycler View适配器 [英] Change listview adapter to recycler view adapter
本文介绍了将ListView适配器更改为Recycler View适配器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我将图像从SD卡加载到ListView时,它开始滞后。我无法平滑滚动。因此,我决定使用回收站视图,甚至可能使用毕加索。我面临的唯一问题是,ListView适配器不能与RecyclerView一起使用。
When I load images from SD card to ListView, it starts lagging. I can not scroll smoothly. So, I decided to use recycler view and maybe Picasso. The only problem I am facing is that, ListView adapter is not working with RecyclerView.
我如何重写以下代码/适配器以与RecyclerView一起使用?
How can I rewrite the following code/adapter to work with RecyclerView?
一切顺利
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;
}}
推荐答案
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)
}
}
}
这篇关于将ListView适配器更改为Recycler View适配器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文