Java 加载滑动图像
我正在开发一个播放歌曲的应用程序,我使用Glide获取歌曲的图像并将其显示在ListView中, 第一个问题 当我在ListView中滚动时,应用程序会变慢,我有另一个问题,即当我向上滚动滑动加载已经加载的图像时,是否有办法解决这些问题 这是我获取歌曲图像的代码Java 加载滑动图像,java,android,android-glide,Java,Android,Android Glide,我正在开发一个播放歌曲的应用程序,我使用Glide获取歌曲的图像并将其显示在ListView中, 第一个问题 当我在ListView中滚动时,应用程序会变慢,我有另一个问题,即当我向上滚动滑动加载已经加载的图像时,是否有办法解决这些问题 这是我获取歌曲图像的代码 ` import android.content.Context; import android.media.MediaMetadataRetriever; import android.view.LayoutInflater; im
`
import android.content.Context;
import android.media.MediaMetadataRetriever;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.ArrayList;
public class ListAdapter
extends BaseAdapter {
private Context context;
private static ArrayList<ListItemFromPhone> newList = new ArrayList<>();
ListAdapter(){}
ListAdapter(Context context, ArrayList<ListItemFromPhone> list) {
notifyDataSetChanged();
this.context = context;
newList = list;
}
@Override
public int getCount() {
return newList.size();
}
@Override
public Object getItem(int position) {
return newList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(R.layout.view,null);
TextView textView = view.findViewById(R.id.textView);
final ImageView imageView = view.findViewById(R.id.imageView);
byte [] imgArtist = getImg(newList.get(position).data);
if (imgArtist != null){
Glide.with(context).asBitmap()
.load(imgArtist)
.placeholder(R.drawable.music_img)
.into(imageView);
}
else imageView.setImageResource(R.drawable.music_img);
textView.setText(newList.get(position).name);
return view;
}
private byte[] getImg(String path){
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(path);
byte[] img = retriever.getEmbeddedPicture();
retriever.release();
return img;
}
}
`
导入android.content.Context;
导入android.media.MediaMetadataRetriever;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.bumptech.glide.glide;
导入java.util.ArrayList;
公共类ListAdapter
扩展BaseAdapter{
私人语境;
私有静态ArrayList newList=新ArrayList();
ListAdapter(){}
ListAdapter(上下文,ArrayList列表){
notifyDataSetChanged();
this.context=上下文;
newList=列表;
}
@凌驾
public int getCount(){
返回newList.size();
}
@凌驾
公共对象getItem(int位置){
返回newList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
查看视图=布局更平坦。从(上下文)。充气(R.layout.View,空);
TextView TextView=view.findViewById(R.id.TextView);
最终ImageView=view.findViewById(R.id.ImageView);
字节[]imgarist=getImg(newList.get(position.data));
if(imgarist!=null){
Glide.with(context.asBitmap())
.load(imgarist)
.占位符(R.drawable.music\u img)
.进入(图像视图);
}
else imageView.setImageResource(R.drawable.music\u img);
setText(newList.get(position.name));
返回视图;
}
私有字节[]getImg(字符串路径){
MediaMetadataRetriever retriever=新的MediaMetadataRetriever();
retriever.setDataSource(路径);
字节[]img=retriever.getEmbeddedPicture();
retriever.release();
返回img;
}
}
要避免此问题,必须使用RecyclerView
。youtube上有很多关于如何实现它的教程。我在使用RecyclerView时遇到了同样的问题