私はリサイクルビューでこのアクティビティを持っている壁紙アプリを作成しようとしています。私はfirebaseのfirestoreデータベースから画像をロードしたい。私はそれをすることができた。私はLOG.Iを使ってチェックしたところ、正しい画像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());
}
}
});
}
}
私MainActivityクラスで私のアダプターとHolderクラス
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)
からpicasso
になります。お手伝いください。
この文のコードを作成する必要はありません:
Picasso picasso = new Picasso.Builder(context)
.downloader(new OkHttpDownloader(client))
.build();
あなたはそれを直接呼び出すことができ、私ははっきりとコメントでそれを指定することができない、ので
あなたは正しいURLを取得していますか? –
ログキャッチエラーはありますか? –
はい私は適切なURLを取得しています。私はちょうど私のブラウザで両側の二重引用符を削除することでそれを確認しました –