Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加载滑动图像_Java_Android_Android Glide - Fatal编程技术网

Java 加载滑动图像

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

我正在开发一个播放歌曲的应用程序,我使用Glide获取歌曲的图像并将其显示在ListView中, 第一个问题 当我在ListView中滚动时,应用程序会变慢,我有另一个问题,即当我向上滚动滑动加载已经加载的图像时,是否有办法解决这些问题

这是我获取歌曲图像的代码

`

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时遇到了同样的问题