如何在自定义列表视图中添加textview和editview?

时间:2012-08-08 20:13:28

标签: android android-listview

我想创建以下格式的自定义列表视图。例如

 _______________________________________
|                                       |
| -----------           ------------    |
|  Principal              EditView      |
| -----------           ------------    |
|                                       |
| -----------           ------------    |
|  Years                  EditView      |
| -----------           ------------    |
|                                       |
| -----------           ------------    |
|  Rate of Int             EditView     |
| -----------           ------------    |
|_______________________________________|

 _______________________________________
|                                       |
| -----------           ------------    |
|  Interest               EditView      |
| -----------           ------------    |
|_______________________________________|

 _______________________________________
|                                       |
| -----------           ------------    |
|  Simple Int             EditView      |
| -----------           ------------    |
|_______________________________________|

 _______________________________________
|                                       |
| ------------          ------------    |
|  Compond Int            EditView      |
| ------------          ------------    |
|_______________________________________|

简而言之,listview中的item1应包含3个文本和editviews,而item2应包含2个text和editview。两个项目应该得到不同的输入。

由于我是android新手,我能够创建简单的listview,但我不知道如何创建具有各种视图的列表视图。

3 个答案:

答案 0 :(得分:1)

您需要创建自定义适配器,此适配器将能够为每个单元格扩展自己的xml视图。

您的新xml视图应该简单地具有listview将使用的最复杂的布局,并且对于不使用子视图信息的每个单元格,只需将该子视图设置为不可见。

这至少应该引导你朝正确的方向发展

答案 1 :(得分:0)

为什么打算使用ListViewTableLayoutScrollView相结合可能对您来说更容易。

答案 2 :(得分:0)

制作自己的ArrayAdapter对我来说很好。 你得到了方法

getView() 你可能会覆盖。

你用的是 LayoutInflater inflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 扩展您在布局中定义为XML的自己的视图。 您可以直接在此方法中填充视图元素。

在我的代码中,我制作了一个Icon的布局,两个文本字段和一个ProgressBar。看起来像这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 ... >

    <ImageView
        android:id="@+id/inventory_item_icon"
        .../>

    <TextView
        android:id="@+id/inventory_item_titel"
        .../>


    <TextView
        android:id="@+id/inventory_status_textfield"
        ... />

    <TextView
        android:id="@+id/inventory_item_info"
        ... />

    <ProgressBar
        android:id="@+id/inventory_item_status"
        ... />

</RelativeLayout>

在getView()中直接填充它们之后很简单 我的代码如下所示:

public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.inventory_icon_text_text, parent, false);
TextView textViewTitel = (TextView) rowView.findViewById(R.id.inventory_item_titel);
TextView textViewInfo = (TextView) rowView.findViewById(R.id.inventory_item_info);
ImageView imageView = (ImageView) rowView.findViewById(R.id.inventory_item_icon);

textViewTitel.setText(values[position]);
  String s = values[position];
    if (s.equals("A")) {
       imageView.setImageResource(R.drawable.a);
       textViewInfo.setText("This is case A!"); 
    } else if (s.equals("B")) {
    return rowView;
}

因此,您可以直接处理各个View元素。 如果您想要使用不同的视图布局,可以在扩充布局之前尝试检查这一点。谢谢你可以选择你想要使用的那个。

希望这对你有所帮助!  托拜厄斯