1

如何在 Android 中制作简单的 ListView,我正在制作一个程序,在该程序中我得到这种风格的 ListView:

在此处输入图像描述

适配器.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="5dp"
    android:gravity="center_vertical"
    android:padding="5dip" >

    <!-- Title Of Song-->

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="false"
        android:text="Name"
        android:textSize="15dip"
        android:typeface="sans" />

    </RelativeLayout>

活动.xml:

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

   <ListView
        android:id="@+id/listView1"
        android:layout_below="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:divider="@android:color/black"
        android:dividerHeight="1dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="20dp"/>

</RelativeLayout>

但我想做这种简单的 List [same List SHAPE],请看下面的屏幕:

在此处输入图像描述

4

6 回答 6

5

根据您的要求

在您的可绘制文件夹中创建一个形状文件。将此 xml 放入其中并根据您的要求更改颜色。

 <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/shape_my">
    <stroke android:width="4dp" android:color="#636161" />
    <padding android:left="5dp"
        android:top="5dp"
        android:right="5dp"
        android:bottom="5dp" />
    <corners android:radius="24dp" />
    <solid android:color="#FFF" />
</shape>

主要的.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="fill_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="#b5b5b5"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector" />

</LinearLayout>

在 ListView 中设置背景android:background="@drawable/shape"

list_row.xml

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

    <TextView
        android:id="@+id/category"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Category"
        android:textColor="#040404"
        android:textSize="15dip"
        android:textStyle="bold"
        android:typeface="sans" />

    <TextView
        android:id="@+id/expiry_date"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/category"
        android:layout_marginTop="1dip"
        android:text="Text here."
        android:textColor="#343434"
        android:textSize="10dip" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/arrow" />

</RelativeLayout>
于 2013-09-27T06:04:41.837 回答
4

您需要创建一个自定义适配器来填充自定义类型列表视图,您可以按照以下步骤一步一步创建一个包含要加载它们的数据的属性的类,如下所示

public class Rec {
private String name;
private String city;


public Rec(String name, String city) {
    super();
    this.name = name;
    this.city = city;
}

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getCity() {
    return city;
}
public void setCity(String city) {
    this.city = city;
}

}

创建一个自定义适配器,其中包含您的记录类及其属性,如下所示

public class customAdapter extends ArrayAdapter<Rec> {
Context context;
public customAdapter(Context context, int textViewResourceId,List<Rec> objects) {
    super(context, textViewResourceId, objects);
    // TODO Auto-generated constructor stub
    this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    View view;
    Rec currentRec = getItem(position);

    LayoutInflater layoutinflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = layoutinflater.inflate(R.layout.reclist,parent,false);

    TextView name = (TextView) view.findViewById(R.id.textView1);
    TextView city = (TextView) view.findViewById(R.id.textView2);

    name.setText(currentRec.getName());
    city.setText(currentRec.getCity());

    //return super.getView(position, convertView, parent);
    return view;



}

现在为您要显示的列表视图创建一个 Xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"
    android:textSize="16sp"
    android:textColor="#000000"
     />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"
    android:layout_below="@id/textView1" />

现在创建您的 Main 类,您可以在其中填充列表视图并相应地推送数据,如下所示:

public class MainActivity extends Activity {

private ListView listView;
List<Rec> recList ;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recList = new ArrayList<Rec>();

    listView= (ListView) findViewById(R.id.listView1);

    recList.add(new Rec("Ali","Lahore"));
    recList.add(new Rec("Tahir","Karachi"));
    recList.add(new Rec("Qasim","Islamabad"));
    recList.add(new Rec("Bilal","BWP"));
    recList.add(new Rec("Akhtar","Pindi"));

    listView.setAdapter(new customAdapter(this,android.R.layout.simple_list_item_1 ,recList));

}

}

创建主要活动的布局,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ListView
    android:id="@+id/listView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true">
</ListView>


<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginRight="112dp"
    android:text="TextView" />

这是带有动态数据的完整自定义列表视图

于 2013-09-27T06:01:30.143 回答
2

你应该用谷歌搜索,有几个可用的例子。是一个,我跟着。

于 2013-09-27T05:53:34.830 回答
1

您可以创建一个列表适配器并根据需要设置布局。例如:

ListAdapter adapter = new SimpleAdapter(
                        ListShipsActivity.this, ArrayList,
                        R.layout.layout_as_you_want, new String[] {
                                "item1","item2"}, //elements of the item in the list
                        new int[] { R.id.text_view1, R.id.text_view2 }); //ids of the layout elements

之后根据需要创建布局xml文件在您的情况下,像这样

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >

<TextView
    android:id="@+id/text_view1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

<ImageView
    android:id="@+id/img_arrow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:src="@drawable/arrow"/>


</RelativeLayout>

<TextView
    android:id="@+id/text_view2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
     />
</LinearLayout>

ps:将箭头图像添加到项目中的drawable文件夹中

于 2013-09-27T05:55:38.150 回答
1

您的代码需要根据您的要求进行重构。

这些示例可能会对您有所帮助。

1-带有箭头的简单列表向前移动

2-带箭头的高级自定义列表

Update your Layout! with corresponding image for arrow and variable names!
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="5dp"
        android:gravity="center_vertical"
        android:padding="5dip" >

        <!-- Title Of Song-->

        <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/thumbnail"
        android:layout_toRightOf="@+id/thumbnail"
        android:text="Name"
        android:typeface="sans"
        android:textSize="15dip"/>


        <TextView
        android:id="@+id/artist"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:textColor="#343434"
        android:textSize="10dip"
        android:layout_marginTop="1dip"
        android:layout_toRightOf="@+id/thumbnail"
        android:text="Just gona stand there and ..." />


        <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/arrowImage"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"/>

    </RelativeLayout>
于 2013-09-27T05:51:23.237 回答
1

嗨,我想您尝试自定义列表视图。因为你创建了这种类型的列表行。

请转到下面的链接。

http://www.codeproject.com/Articles/507651/Customized-Android-ListView-with-Image-and-Text

行.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/public_row"
    android:layout_width="match_parent"
    android:background="@drawable/button_publicrow_selector"
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp">

    <ImageView android:layout_width="wrap_content"
            android:id="@+id/img_public_dealing"
            android:layout_height="wrap_content"
            android:background="@drawable/contact_pic"
            android:layout_centerVertical="true"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dp"/>

    <!--  Right most linear layout -->
    <LinearLayout android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="horizontal"
                  android:id="@+id/linear_public_dealing"
                  android:gravity="center_vertical"
                  android:layout_centerVertical="true"
                  android:layout_alignParentRight="true"
                  android:layout_marginRight="3dp">

         <Button  
                android:id="@+id/btn_delete"
                 android:layout_width="wrap_content"
                  android:layout_height="40dp"
                  android:text="Leave Pit"
                  android:textColor="#000"
                  android:gravity="center"
                  android:textSize="15dp"
                  android:textStyle="bold"
                  android:visibility="gone"/>

        <Button  
                  android:id="@+id/btn_notification"
                  android:layout_width="wrap_content"
                  android:layout_height="40dp"
                  android:background="@drawable/notification_selector"
                  android:textColor="#fff"
                  android:gravity="center"
                  android:textSize="15dp"
                  android:textStyle="bold"/>

        <ImageView android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:src="@drawable/orange_arrow"/>

    </LinearLayout>

    <!--  Center Linear LAyout  -->

    <LinearLayout
        android:id="@+id/linear_index"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="left|top"
        android:orientation="vertical"
        android:layout_toLeftOf="@+id/linear_public_dealing"
        android:layout_toRightOf="@+id/img_public_dealing">

        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
        <TextView
                  android:id="@+id/txt_pit_name"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="Three Amigos"
                  android:textColor="#000"
                  android:singleLine="true"
                  android:layout_marginLeft="5dp"
                  android:textSize="12dp"
                  android:textStyle="bold"/>
         <TextView
                  android:id="@+id/txt_index_name"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="(U2000)"
                  android:textColor="#000"
                  android:singleLine="true"
                  android:layout_marginLeft="10dp"
                  android:textSize="12dp"
                  android:textStyle="bold"/>
        </LinearLayout>
         <TextView 
                  android:id="@+id/txt_profileloss"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="+$100/+50 p"
                  android:textColor="#0a0"
                  android:layout_marginLeft="5dp"
                  android:textSize="10dp"
                  android:textStyle="bold"/>

            <TextView 
                  android:id="@+id/txt_pitid"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="id"
                  android:visibility="invisible"/>

            </LinearLayout>

</RelativeLayout>
于 2013-09-27T05:54:03.260 回答