RecyclerView 中的图像 [英] Images in RecyclerView
问题描述
我在 Android 中使用 RecyclerView,但在处理图像时遇到了一些问题.
I am using RecyclerView in Android and I am having some trouble with images.
我想显示特定文件夹中的图像列表及其路径名.
I would like to display a list of the images in a particular folder with their path names.
这是我的row.xml
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="test" />
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true" />
</LinearLayout>
在我的适配器中,我使用这个代码来设置一行的图像:
In my adapter, I use this code to set the image of a row:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextView.setText(mDataset[position]);
holder.mImageView.setImageURI(Uri.parse("file://" + mMediaStorageDir.getPath() + "/" + mDataset[position]));
}
图像加载正常,但当我向下滚动时,整个应用程序变得非常缓慢.
The images load fine, but when I scroll down the whole app becomes very slow.
当我加载一个小的 drawable 时不会发生这种情况.是不是图片太大了?
This doesn't happen when I load a small drawable instead. Is it because the pictures are too big?
推荐答案
是的.我觉得它太大了.
Yes. I think it's too big.
您需要首先加载您的图像(跟踪空闲内存),然后使用他.
You need load firstly your images(track for free memory) and after that use him.
不一定使用毕加索.但你可以使用它.
我建议你阅读
例如:
ItemData.java
package com.shustikov.android;
public class ItemData {
private String title;
private int imageUrl;
public ItemData(String title,int imageUrl){
this.title = title;
this.imageUrl = imageUrl;
}
public String getTitle() {
return title;
}
public int getImageUrl() {
return imageUrl;
}
}
RecyclerViewExampleAdapter.java
package com.shustikov.android;
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;
public class RecyclerViewExampleAdapter extends RecyclerView.Adapter<RecyclerViewExampleAdapter.ViewHolder> {
private ItemData[] itemsData;
public RecyclerViewExampleAdapter(ItemData[] itemsData) {
this.itemsData = itemsData;
}
@Override
public RecyclerViewExampleAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View itemLayoutView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_layout, null);
ViewHolder viewHolder = new ViewHolder(itemLayoutView);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.txtViewTitle.setText(itemsData[position].getTitle());
viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl());
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView txtViewTitle;
public ImageView imgViewIcon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.item_title);
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon);
}
}
@Override
public int getItemCount() {
return itemsData.length;
}
}
这篇关于RecyclerView 中的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!