이미지와 텍스트를 표시 할 ScrollView 안에 ListView가 있습니다. 텍스트가 완벽하게 표시됩니다. 그러나 이미지는 그렇지 않습니다. 목록을 천천히 스크롤하면 모든 이미지가 완벽하게로드됩니다.하지만 실제로 빠르게 실행하면로드되지 않습니다. 나는 내가 어떻게이 메소드를 호출하는지 설정하는 방법이라고 생각하지만 이것은 Android에서의 첫날입니다. 아래는 리소스, 레이아웃 및 클래스입니다.안드로이드 ListView 내부 ScrollView 이미지를로드하려면 글라이드 항상 로딩되지 않습니다.
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow>
<ImageView
android:id="@+id/img"
android:layout_width="50dp"
android:layout_height="50dp"/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="50dp" />
</TableRow>
</TableLayout>
그것과 함께 갈 클래스 :
public class someClass extends ArrayAdapter<String>{
private final Activity context;
private final ArrayList<String> web;
ImageView imageView;
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReference();
final ArrayList<Uri> uriList = new ArrayList<>();
public galveon_character_creation_spelllist(Activity context,
ArrayList<String> web) {
super(context, R.layout.someClass, web);
this.context = context;
this.web = web;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.someClass, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.txt);
imageView = (ImageView) rowView.findViewById(R.id.img);
txtTitle.setText(web.get(position));
getImages(position);
return rowView;
}
public void getImages(Integer position) {
storageRef.child("FolderRef/" + web.get(position) + ".png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
//imageView.setImageURI(null);
//imageView.setImageURI(uri);
Glide.with(getContext())
.load(uri) // the uri you got from Firebase
.placeholder(R.drawable.unknown) //this would be your default image (like default profile or logo etc). it would be loaded at initial time and it will replace with your loaded image once glide successfully load image using url.
.diskCacheStrategy(DiskCacheStrategy.ALL) //using to load into cache then second time it will load fast.
.animate(R.anim.fade_in) // when image (url) will be loaded by glide then this face in animation help to replace url image in the place of placeHolder (default) image.
.fitCenter()//this method help to fit image into center of your ImageView
.into(imageView); //Your imageView variable
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
imageView.setImageResource(R.drawable.unknown);
}
});
}
}
web
이 사진과 함께 줄을 텍스트 만있는 내가 텍스트와 목록 내부 이미지 뷰를 추가하는 방법
이름. 또한 활동이 목록을로드 할 때 표시되는 모든 "셀"은로드되지 않지만 천천히 아래로 스크롤하여 백업하면 이미지가 나타납니다 (천천히 스크롤하면).
내가 더 많은 정보를 게시해야하는 경우. 안드로이드가 어떻게 작동하는지 아직도 배웁니다.
왜 listview에서 scolling 자체를 관리 할 때 ListView를 scrollview에 넣을까요? .diskCacheStrategy (DiskCacheStrategy.SOURCE);를 시도 했습니까? – Geek
더 나은 결과를 얻으려면 RecyclerView 대신 ListView를 사용하거나 ListView 만 사용하려면 목록 어댑터 클래스에서 ViewHolder를 사용하십시오. – DkThakur