如何在Android中制作简单的ListView,我正在制作一个程序,我以这种方式获取ListView:
Adapter.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>
Activity.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 [相同的List SHAPE] ,请看下面的屏幕:
答案 0 :(得分: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>
<强> main.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>
答案 1 :(得分:4)
您需要创建自定义适配器以填充自定义类型列表视图 您可以按照以下步骤操作 步骤1 创建一个包含要加载其数据的属性的类,如下所示
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" />
这是包含动态数据的完整自定义列表视图
答案 2 :(得分:2)
你应该用谷歌搜索,有几个例子可用。 THIS就是那个,我跟着。
答案 3 :(得分:1)
您的代码需要根据您的要求进行重新分解。
这些例子可能会帮助你。
1- Simple list with arrow to move forward
2- Advance Custom List with arrow
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>
答案 4 :(得分:1)
您好我认为您尝试自定义列表视图。因为你创造了这种类型的列表行。
请点击以下链接。
http://www.codeproject.com/Articles/507651/Customized-Android-ListView-with-Image-and-Text
row.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>
答案 5 :(得分: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:将箭头图像添加到项目中的可绘制文件夹