저는 리바이벌러 뷰로이 액티비티를 가지고있는 벽지 앱을 만들려고했습니다. firebase 데이터베이스에서 이미지를로드하고 싶습니다. 그렇게 할 수있었습니다. 내가 LOG를 사용하여 그것을 확인하면 오른쪽 이미지 URL을 얻고있다. 나는 이미지 링크를 PICASSO
을 사용하는 이미지로 변환하려고 시도했다. 그러나 불행히도 이미지는 recyclerview에로드되지 않는다.피카소를 사용하여 firebase 데이터베이스에서 recyclerview에 이미지가로드되지 않습니다.
package com.example.rimapps.charpapers;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import java.util.ArrayList;
public class Main2Activity extends AppCompatActivity {
private static final String TAG ="tAAAAAAAAAAg" ;
private ArrayList<String> imagelist;
RecyclerView recyclerView2;
FirebaseFirestore db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
db = FirebaseFirestore.getInstance();
recyclerView2 = (RecyclerView) findViewById(R.id.recview2);
recyclerView2.setLayoutManager(new GridLayoutManager(Main2Activity.this,2));
imagelist= new ArrayList<>();
DocumentReference docRef = db.collection("Wallpapers").document("Aquaman");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
Log.d(TAG, "DocumentSnapshot data: " + task.getResult().getData());
for(int i=1;i<document.getData().size();i++){
document.get(i+"");
imagelist.add(document.get(i+"").toString());
Log.e(TAG,document.get(i+"").toString());
}
ImageAdapter imageAdapter = new ImageAdapter(imagelist,Main2Activity.this);
recyclerView2.setAdapter(imageAdapter);
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
}
}
내가 내 재활용보기에 DB에서 이미지를로드 할 내 MainActivity 클래스
package com.example.rimapps.charpapers;
import android.content.Context;
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.Toast;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Protocol;
import com.squareup.picasso.OkHttpDownloader;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by Rimshad on 28/11/2017.
*/
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder>{
List<String> Mylist2= new ArrayList<>();
Context context;
public ImageAdapter(List<String>Mylist2,Context context) {
this.Mylist2 = Mylist2;
this.context = context;
}
@Override
public ImageAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.items2, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ImageAdapter.ViewHolder holder, final int position) {
OkHttpClient client = new OkHttpClient();
client.setProtocols(Arrays.asList(Protocol.HTTP_1_1));
Picasso picasso = new Picasso.Builder(context)
.downloader(new OkHttpDownloader(client))
.build();
picasso.with(context)
.load(Mylist2.get(position))
.placeholder(R.drawable.superman)
.error(R.drawable.error)
.into(holder.image2);
holder.image2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context,Mylist2.get(position),Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return Mylist2.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView image2;
ViewHolder(View view) {
super(view);
image2 = (ImageView) view.findViewById(R.id.wallid);
}
}
}
이것은 내 어댑터 및 홀더 클래스 이것은 도와주세요
현재 결과가 에서 .error(R.drawable.error)
입니다. 도움을 청하십시오. 그게 HTTPS 문제 :
Picasso picasso = new Picasso.Builder(context)
.downloader(new OkHttpDownloader(client))
.build();
당신은 직접 호출 할 수 있습니다 :
메이크업의 필요는이 문장 코드가 없습니다 : 나는 명확하게 의견을 지정할 수 없기 때문에
올바른 URL을 얻었습니까? –
logcat 오류가 있습니까? –
예 적절한 URL을 얻고 있습니다. 방금 브라우저에서 양면 따옴표를 삭제하여 확인했습니다. –