我想创建以下格式的自定义列表视图。例如
_______________________________________
| |
| ----------- ------------ |
| 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,但我不知道如何创建具有各种视图的列表视图。答案 0 :(得分:1)
您需要创建自定义适配器,此适配器将能够为每个单元格扩展自己的xml视图。
您的新xml视图应该简单地具有listview将使用的最复杂的布局,并且对于不使用子视图信息的每个单元格,只需将该子视图设置为不可见。
这至少应该引导你朝正确的方向发展
答案 1 :(得分:0)
为什么打算使用ListView
? TableLayout
与ScrollView
相结合可能对您来说更容易。
答案 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元素。 如果您想要使用不同的视图布局,可以在扩充布局之前尝试检查这一点。谢谢你可以选择你想要使用的那个。
希望这对你有所帮助! 托拜厄斯