简体   繁体   English

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

[英]Listview 5 “items” horizontal with a vertical scroll Android

我想知道如何使用垂直滚动制作每行5个项目的ListView

You need to create a custom row, then have 60 rows. 您需要创建一个自定义行,然后有60行。

Lets asume you have an 让我们假设你有一个

ArrayList<String> cars 

with the cars data. 与汽车数据。

    @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;
    }

then create a class like this one 然后创建一个像这样的类

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);
 }
}

Finally, create an XML called list_item_car_row: 最后,创建一个名为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>

That is what is called a component, a not system default item. 这就是所谓的组件,而非系统默认项。 This component is based on 6 textviews. 此组件基于6个textviews。 Edit the XML, add it more data and make a cool one :) 编辑XML,添加更多数据并制作一个很酷的:)

As I got it, you want to make a ordinary ListView with vertical Scrolling but in every row you want to have Horizontal Scrolling too. 当我得到它时,你想要使用垂直滚动创建一个普通的ListView ,但是在每一行中你也想要进行水平滚动。

Make ordinary ListView with any adapter you like but design the item Layout like this: 使用您喜欢的任何适配器制作普通的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>

You'll have Vertically Scrollable ListView with horizontally scrollabel items. 你将拥有带有水平滚动条Scrollable ListView垂直可Scrollable ListView

You must create a vertical ListView with a custom ListAdapter with the derired 5 items per row. 您必须使用自定义ListAdapter创建一个垂直ListView,每行派生5个项目。 You can describe the layout of the rows in a XML layout file. 您可以在XML布局文件中描述行的布局。 For example see http://www.survivingwithandroid.com/2012/10/android-listview-custom-adapter-and.html . 例如,请参阅http://www.survivingwithandroid.com/2012/10/android-listview-custom-adapter-and.html

You need to create a layoutfile with a Listview 您需要使用Listview创建布局文件

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Then in code you need an ArrayAdapter (I always create my own!) to populate your list and a item_layout for every item 然后在代码中你需要一个ArrayAdapter(我总是自己创建!)来填充你的列表和每个项目的item_layout

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM