0

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

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

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

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

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

简而言之,listview 中的 item1 应包含 3 个文本和编辑视图,而 item2 应包含 2 个文本和编辑视图。这两个项目应该得到不同的输入。

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

4

3 回答 3

1

您需要创建一个自定义适配器,该适配器将能够为每个单元格膨胀自己的 xml 视图。

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

这至少应该引导您朝着正确的方向前进

于 2012-08-08T20:16:48.313 回答
0

你为什么打算使用ListView? ATableLayout与 a 组合ScrollView对您来说可能是一个更简单的选择。

于 2012-08-08T20:24:36.343 回答
0

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

getView() 你可以覆盖它。

在那里你使用 LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 膨胀您在布局中定义为 XML 的视图。您可以直接在此方法中填充视图元素。

在我的代码中,我制作了一个图标布局、两个文本字段和一个进度条。看起来像这样:

<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 元素。如果您想拥有不同的视图布局,您可以在扩展布局之前尝试检查这一点。谢谢你可以选择你想使用哪一个。

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

于 2012-08-08T20:38:15.810 回答