在Android中显示产品列表,具有多列自定义布局

时间:2014-10-31 13:13:07

标签: android android-layout android-custom-view android-gridview android-json

我想在我的Android应用程序中显示一些产品,我需要它是动态的,

我需要以下要求:

  • 以网格视图显示产品(2,3或4列,具体取决于手机,平板电脑,纵向,横向模式)
  • 每个产品都有onclick事件(以显示另一个活动/片段中产品的详细信息)
  • 网格上的每个产品都应该来自xml布局(包含缩略图,标题,价格等)
  • 在滚动时加载更多产品(在滚动时加载)
  • 使用json从网上的sqlserver数据库加载产品(可以使用适配器完成......)

我应该提一下,我已经搜索了android库,我找到了cardslib,但是我无法理解如何将这些要求与这个库结合起来!我知道有些要求很容易处理,但我不知道如何将它们全部放在一起!

为了澄清情况我已经从类似的应用程序上传了一些图片:

portrait example

landscape example

提前感谢任何解决方案。

3 个答案:

答案 0 :(得分:2)

这是单个网格视图。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#e6e6e6"
android:orientation="vertical"
android:padding="1dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:orientation="vertical"
        android:padding="1.5dp">

        <ImageView
            android:id="@+id/picture"
            android:layout_width="150dp"
            android:layout_height="250dp"
            android:layout_gravity="top|center"
            android:padding="5dp"
            android:src="@drawable/productcimage" />

        <View
            android:layout_width="match_parent"
            android:layout_height="1.5dp"
            android:background="#e6e6e6" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal">

            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:layout_marginTop="2dp"
                android:text="New Text" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="New Text" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_below="@+id/textView2"
                android:text="New Text" />

            <RatingBar
                android:id="@+id/ratingBar"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/textView2"
                android:rating="3" />

        </RelativeLayout>
    </LinearLayout>
</LinearLayout>

Screenshot

答案 1 :(得分:1)

这是Gridview

v <- c(0,1,2,3,4,5)
v[v>0 & v<5] <- 1
v
#[1] 0 1 1 1 1 5
v[v == 5] <- 2
v
[1] 0 1 1 1 1 2

答案 2 :(得分:1)

我认为您可以在设置布局时使用GridLayoutManager

GridLayoutManager linearLayoutManager = new GridLayoutManager(mContext, 2);
rvCarsCat.setLayoutManager(linearLayoutManager);