Android 将视图动态添加到ListView项不会';行不通
我有Android 将视图动态添加到ListView项不会';行不通,android,listview,android-listview,Android,Listview,Android Listview,我有ListView,它总是包含两个不同的子视图 现在我想使用第一个(position==0)。它是膨胀视图,包含图像视图和相对视图(必须包含标记) 在尝试将一些视图添加到第一个项目的RelativeLayout后,我看到它们被添加了,但变得不可见。方法RelativeLayout.getChildCount()返回正确的值,但添加的标记不可见 ListView适配器: @Override public View getView(int position, View view, ViewGro
ListView
,它总是包含两个不同的子视图
现在我想使用第一个(position==0)。它是膨胀视图,包含图像视图
和相对视图
(必须包含标记)
在尝试将一些视图添加到第一个项目的RelativeLayout
后,我看到它们被添加了,但变得不可见。方法RelativeLayout.getChildCount()
返回正确的值,但添加的标记不可见
ListView适配器:
@Override
public View getView(int position, View view, ViewGroup parent) {
switch (position) {
case 0:
view = (RelativeLayout) LayoutInflater.from(act).inflate(R.layout.item_choose_color_picture, parent, false);
((ImageView) ((RelativeLayout) view).findViewById(R.id.item_choose_color_image)).setImageBitmap(bitmap);
return view;
case 1:
view = (ImageView) LayoutInflater.from(act).inflate(R.layout.item_choose_color_palette, parent, false);
return view;
}
return view;
}
第一个项目的布局(项目\选择\颜色\图片):
更新
当我从main_activity.xml对RelativeLayout执行同样的操作时,一切都正常。所有标记都添加到正确的位置。我认为
填充\u parent
是不推荐的,您应该使用匹配\u parent
。但这并不能解决问题,我没料到会这样做:p这就是为什么我没有将其作为答案发布。如果您要为位置0和1添加不同的视图,而不是列表中的其他视图,为什么不把它添加到上面的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"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/item_choose_color_image"
/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/item_choose_color_abs"
>
</RelativeLayout>
</RelativeLayout>
itemRelative = (RelativeLayout) ((RelativeLayout) listView.getChildAt(0)).findViewById(R.id.item_choose_color_abs);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.topMargin = 20;
layoutParams.leftMargin = 20;
ImageView view = new ImageView(this);
view.setImageDrawable(getResources().getDrawable(R.drawable.color_marker));
view.setLayoutParams(layoutParams);
itemRelative.addView(view, layoutParams);