2017-12-12 23 views
0

私はリサイクルビューでこのアクティビティを持っている壁紙アプリを作成しようとしています。私はfirebaseのfirestoreデータベースから画像をロードしたい。私はそれをすることができた。私はLOG.Iを使ってチェックしたところ、正しい画像URLを取得しています。PICASSOを使用して画像リンクを画像に変換しようとしました。残念ながら、画像はrecyclerviewにロードされません。これは、これは私がピカソを使用してfirebaseデータベースからrecyclerviewに画像がロードされない

私のリサイクル業者ビューにDBから画像をロードする

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(); 

あなたはそれを直接呼び出すことができ、私ははっきりとコメントでそれを指定することができない、ので

+0

あなたは正しいURLを取得していますか? –

+0

ログキャッチエラーはありますか? –

+0

はい私は適切なURLを取得しています。私はちょうど私のブラウザで両側の二重引用符を削除することでそれを確認しました –

答えて

0

この答えは次のとおりです。httpsに問題があることですby:

Picasso.with(context) 
     .load(Mylist2.get(position)) 
     .placeholder(R.drawable.superman) 
     .error(R.drawable.error) 
     .into(holder.image2); 
+0

データを取りたいdatabase.not fro drawable @ankit patidar –

+0

これで試してみてください。それはあなたのために動作します –

+0

まだ動作しません。同じ結果がまだあります –

関連する問題