2017-12-12 1 views
0

저는 리바이벌러 뷰로이 액티비티를 가지고있는 벽지 앱을 만들려고했습니다. 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(); 

당신은 직접 호출 할 수 있습니다 :

메이크업의 필요는이 문장 코드가 없습니다 : 나는 명확하게 의견을 지정할 수 없기 때문에

+0

올바른 URL을 얻었습니까? –

+0

logcat 오류가 있습니까? –

+0

예 적절한 URL을 얻고 있습니다. 방금 브라우저에서 양면 따옴표를 삭제하여 확인했습니다. –

답변

0

이 대답은 작성자 :

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

데이터를 가져오고 싶습니다. database.not 이가능한 @ankit patidar –

+0

브라이이 시도하십시오. 그것은 당신을 위해 작동합니다 –

+0

작동하지 않습니다. 같은 결과 여전히 –

관련 문제