2015-10-04 78 views
0

我正在制作一个应用程序,该应用程序将使用具有交错布局的RecyclerView显示图片。我想从tumblr博客中拉出图片,并在recyclerView中实现它们。我已经注册了我的应用程序并收到了OAuth使用者密钥和密钥。现在,我是新来的,我不知道如何实现这个代码到我已经设置的recyclerView中。这就是我想要完成的。只需在应用程序上显示图像。不需要登录。没有太多的功能,只显示图片。仅显示来自Android应用程序的Tumblr博客的图像文章

我给这个时候我选择了OAuth认证选项

// Authenticate via OAuth 
JumblrClient client = new JumblrClient("key"); 
client.setToken("key"); 

// Make the request 
Map<String, Object> params = new HashMap<String, Object>(); 
params.put("type", "photo"); 
List<Post> posts = client.blogPosts("url", params); 

我给这个时候我选择了API密钥验证选项

// Authenticate via API Key 
JumblrClient client = new JumblrClient("key"); 

// Make the request 
Map<String, Object> params = new HashMap<String, Object>(); 
params.put("type", "photo"); 
List<Post> posts = client.blogPosts("url", params); 

有一个例子输出,采用JSON格式,不提供URL,因此我无法解析应用中的JSON。我只剩下这个Java代码,我正在使用的教程是使用JSON HERE

回答

0

首先,您需要为回收站视图创建一个适配器。

请注意,在代码中,我使用picasso库来获取图像。所以一定要把它包含在你的gradle文件中。

的回收站查看适配器

package com.sample.demo.adaptor; 

import android.content.Context; 
import android.net.Uri; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import com.squareup.picasso.Picasso; 

import java.util.List; 


public class ImagesRecyclerViewAdaptor extends RecyclerView.Adapter<ImagesRecyclerViewAdaptor.ImagesViewHolder> { 

    private List<Post> posts; 

    public ImagesRecyclerViewAdaptor(List<Post> _posts) { 
     this.posts = _posts; 
    } 

    @Override 
    public int getItemCount() { 
     return posts.size(); 
    } 

    @Override 
    public void onBindViewHolder(ImagesViewHolder imageViewHolder, int i) { 
     Post ci = posts.get(i); 
     if (ci != null) { 

      // EXTRACT THE URL FROM POST NOT SURE WHAT FUNCTION TO USE 
      Uri uri = Uri.parse(); 
      Context context = imageViewHolder.vPostImage.getContext(); 
      Picasso.with(context).load(uri).into(imageViewHolder.vPostImage); 
     } 
    } 

    @Override 
    public ImagesViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View itemView = LayoutInflater. 
       from(viewGroup.getContext()). 
       inflate(R.layout.image_cardview, viewGroup, false); 

     ImagesViewHolder viewHolder = new ImagesViewHolder(itemView); 
     return viewHolder; 
    } 

    public static class ImagesViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     protected ImageView vPostImage; 

     public ImagesViewHolder(View v) { 
      super(v); 
      v.setOnClickListener(this); 

      vPostImage = (ImageView) v.findViewById(R.id.card_hotel_image); 
     } 

     @Override 
     public void onClick(View v) { 

     } 
    } 
} 

从您的主要活动或片段呼叫

// Authenticate via API Key 
JumblrClient client = new JumblrClient("key"); 

// Make the request 
Map<String, Object> params = new HashMap<String, Object>(); 
params.put("type", "photo"); 
List<Post> posts = client.blogPosts("url", params); 

final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); 

RecyclerView imageList = (RecyclerView) rootView.findViewById(R.id.imageList); 
imageList.setHasFixedSize(true); 
imageList.setLayoutManager(layoutManager); 

ImagesRecyclerViewAdaptor imageAdaptor = new ImagesRecyclerViewAdaptor(posts); 
imageList.setAdapter(imageAdaptor); 
示例代码