Listview 5“项目”水平与垂直滚动Android

时间:2013-07-25 10:50:52

标签: android android-listview vertical-scrolling

我想知道如何制作ListView每行5个项目水平与垂直滚动

4 个答案:

答案 0 :(得分:1)

您需要创建一个自定义行,然后有60行。

假设你有一个

ArrayList<String> cars 

与汽车数据。

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {  
       //Determine the first car
       int firstCarPosition = position*5;
       CarListItem item = new CarListItem(context);
       item.fillItem(firstCarPosition);
       return item;
    }

然后创建一个像这样的类

public class CarListItem extends LinearLayout {

  public SingleRowListItem(Context context) {
    super(context);
    LayoutInflater inflater =     (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.list_item_cars_row, this, true);
  }

 public void fillItem(int firstPosition)
 {
     TextView car1 = (TextView)findViewById(R.id.car1);
     TextView car2 = (TextView)findViewById(R.id.car2);
     TextView car3 = (TextView)findViewById(R.id.car3);
     TextView car4 = (TextView)findViewById(R.id.car4);
     TextView car5 = (TextView)findViewById(R.id.car5);

     car1.setText(cars.get(firstPosition);
     car2.setText(cars.get(firstPosition+1);
     car3.setText(cars.get(firstPosition+2);
     car4.setText(cars.get(firstPosition+3);
     car5.setText(cars.get(firstPosition+4);
 }
}

最后,创建一个名为list_item_car_row的XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout   
xmlns:android="http://schemas.android.com/apk/res/android"  
android:layout_width="fill_parent"
android:layout_height="60dp"
android:background="@drawable/standard_background"
android:orientation="horizontal"
>
    <TextView
    android:id="@+id/car1"
    android:layout_height="wrap_content"
    android:layout_weight="wrap_content"/>
    <TextView
    android:id="@+id/car2"
    android:layout_height="wrap_content"
    android:layout_weight="wrap_content"/>
    <TextView
    android:id="@+id/car3"
    android:layout_height="wrap_content"
    android:layout_weight="wrap_content"/>
    <TextView
    android:id="@+id/car4"
    android:layout_height="wrap_content"
    android:layout_weight="wrap_content"/>
    <TextView
    android:id="@+id/car5"
    android:layout_height="wrap_content"
    android:layout_weight="wrap_content"/>  
</LinearLayout>

这就是所谓的组件,而非系统默认项。此组件基于6个textviews。编辑XML,添加更多数据并制作一个很酷的数据:)

答案 1 :(得分:1)

当我得到它时,你想用垂直滚动创建一个普通的ListView,但是你想在每一行中进行水平滚动。

使用您喜欢的任何适配器制作普通ListView,但设计项目布局如下:

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

    <HorizontalScrollView
        android:id="@+id/hor_scroll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/lin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/icon"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_marginRight="6.0dip"
                android:layout_alignParentTop="true"
                android:layout_alignParentBottom="true"
                android:focusable="false" />

            <TextView
                android:textAppearance="?android:textAppearanceMedium"
                android:gravity="center_vertical"
                android:id="@+id/text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:singleLine="true"
                android:layout_toRightOf="@id/icon"
                android:layout_alignParentTop="true"
                android:layout_alignParentBottom="true" />

        </LinearLayout>

    </HorizontalScrollView>


</RelativeLayout>

您将拥有垂直Scrollable ListView水平滚动条项目。

答案 2 :(得分:0)

您必须使用自定义ListAdapter创建一个垂直ListView,每行派生5个项目。您可以在XML布局文件中描述行的布局。例如,请参阅http://www.survivingwithandroid.com/2012/10/android-listview-custom-adapter-and.html

答案 3 :(得分:0)

您需要使用Listview

创建布局文件
<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

然后在代码中你需要一个ArrayAdapter(我总是创建自己的!)来填充你的列表和每个项目的item_layout

arrayAdapter = new ArrayAdapter(getActivity().getApplicationContext(), R.layout.item_layout, someArrayList);
        ListView lv = (ListView) view.findViewById(R.id.list);
        lv.setAdapter(arrayAdapter );