在回收商视图中显示类似于Facebook时间线的图像

时间:2015-11-29 09:58:22

标签: android facebook image android-recyclerview

我正在创建一个Android应用程序,我一度陷入困境。我希望显示在Facebook时间线中显示的帖子。邮政可能有图像或可能没有。我为其他帖子元素创建了卡片视图,我可以在帖子中显示它们。我有从服务器发送的图像链接的帖子图像,现在我想下载图像并显示在其中有图像的特定帖子。我怎样才能做到这一点?如果用户有10个帖子,则可能有一个或两个图像。如何检查哪个帖子有图像,然后在下载后在该帖子中显示图像。任何人都可以帮助我。

如果您需要更多信息,请与我们联系。我的卡片视图如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardCornerRadius="4dp">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/imageViewUser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/human_image"/>

    <TextView
        android:id="@+id/textViewTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/imageViewUser"
        android:layout_toEndOf="@+id/imageViewUser"
        android:textSize="18sp"
        android:text="titleText"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp"/>

        <TextView
            android:id="@+id/textViewNoOfDays"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textViewTitle"
            android:textSize="14sp"
            android:layout_marginLeft="10dp"
            android:text="No of Days"
            android:layout_toRightOf="@+id/imageViewUser"
            android:layout_alignBottom="@+id/imageViewUser"/>

        <TextView
            android:id="@+id/textViewPostDescription"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/imageViewUser"
            android:layout_marginTop="20dp"
            android:text="ABCDE"
            android:layout_marginLeft="20dp"
            android:layout_marginStart="20dp"/>

        <View
            android:layout_width="fill_parent"
            android:layout_height="2dp"
            android:background="#c0c0c0"
            android:layout_below="@+id/postImage"
            android:layout_marginTop="10dp"/>

        <ImageButton
            android:id="@+id/imageButtonPin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:src="@mipmap/ic_pin_grey600_18dp"/>

        <ImageView
            android:id="@+id/postImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textViewPostDescription"
            />








    </RelativeLayout>






</android.support.v7.widget.CardView>




</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

这就是我设法让它发挥作用的方式。

适配器类:

public class StoriesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private List<Success> successList;
    ImageLoader imageLoader = AppController.getInstance().getImageLoader();
    private Context mContext;

    public StoriesAdapter(Context context, List<Success> successList) {
        this.successList = successList;
        this.mContext = context;
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.success_list, parent, false);
        StoryItemViewHolder vh = new StoryItemViewHolder(v);

        return vh;
    }
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
        if (imageLoader == null)
            imageLoader = AppController.getInstance().getImageLoader();
        final Success success = successList.get(position);
        StoryItemViewHolder holder = (StoryItemViewHolder) viewHolder;
        // Feed image
        if (!success.getThumbnailUrl().equals("null")) {//check if null
            holder.thumbNail.setImageUrl(success.getThumbnailUrl(), imageLoader);
            holder.thumbNail.setVisibility(View.VISIBLE);
            holder.thumbNail.setResponseObserver(new FeedImageView.ResponseObserver() {
                        @Override
                        public void onError() {
                        }

                        @Override
                        public void onSuccess() {
                        }
                    });
        } else {
            holder.thumbNail.setVisibility(View.GONE);
        }

    }
    @Override
    public int getItemCount() {
        return (null != successList ? successList.size() : 0);
    }

}

viewHolder:

public class StoryItemViewHolder extends RecyclerView.ViewHolder {
    public FeedImageView thumbNail;

    public StoryItemViewHolder(View view) {
        super(view);
        this.thumbNail= (FeedImageView) view.findViewById(R.id.newsImage);
    }

}

答案 1 :(得分:0)

我认为这是你要找的那个,facebook 比如cardview。它测试从服务器获取的图像是null。这也是对图像大小的响应。