0

我正在处理项目,主要布局包含 ListView。我想动态地将子项添加到ListViewItem视图中。我的主要布局如下:

main_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="fill_parent" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="TextView"/>

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" >
    </ListView>
</RelativeLayout>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dip"
    android:background="@android:color/transparent" >

</LinearLayout>

我想添加TextView到返回viewgetView以下属性:

  1. 高度:fill_parent
  2. 宽度:wrap_content
  3. 文本:文本视图项

    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) this.M_context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_item, parent, false);
    
        return convertView;
    }
    

请注意,我想将 subItems 动态添加到 ListViewItem。你可以假设,我有一个 TextView 数组,并想用这个 Items 填充我的 listView。我该怎么做这个场景?我在其他线程和谷歌上搜索都找不到任何结果。那么,有人可以帮我解决我的问题吗?

提前致谢 :)

4

1 回答 1

1

这是我的 getView() 方法。

主要的.xml

<ListView
    android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_below="@+id/button1"
    android:cacheColorHint="@android:color/transparent"
    android:divider="#00ff00"
    android:fastScrollEnabled="true"
    android:focusable="false"
    android:listSelector="#000000"
    android:paddingTop="5dp"
    android:saveEnabled="true" >
</ListView>

项目.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

适配器

 class CustomAdapter extends ArrayAdapter<String> {

    public CustomAdapter(Context context, int resource, List<String> objects) {
        super(context, resource, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder = null;

        /*convertView = mInflater.inflate(R.layout.item, null);
        holder = new ViewHolder(convertView);
        convertView.setTag(holder);
        holder = (ViewHolder) convertView.getTag();

        holder.getAppName().setText(str.get(position));*/

        if(position==0)
        {
            ImageView iv = new ImageView(getApplicationContext());
            iv.setBackgroundResource(R.drawable.ic_launcher);
            convertView = iv;
        }
        else if(position==1)
        {
            TextView tv = new TextView(getApplicationContext());
            tv.setText("text view");
            convertView = tv;
        }
        else
        {
            EditText et = new EditText(getApplicationContext());
            et.setText("ET go home");
            convertView = et;
        }

        return convertView;
    }

    private class ViewHolder {
        private View pathRow;
        private TextView appNameView = null;

        public ViewHolder(View row) {
            pathRow = row;
        }

        public TextView getAppName() {
            if (null == appNameView) {
                appNameView = (TextView) pathRow.findViewById(R.id.tv);
            }
            return appNameView;
        }
    }
}

注释掉的部分是以前的部分。它下面的代码是我用来动态生成视图并返回它们的代码。我的 listitem.xml 中仍然有一个 textView。但是适配器设置了我们从 getView() 返回的视图。这对我有用。

我真的不;在您的 item.xml 中看不到 LinearLayout 的意义。您可以在自己的代码中执行此操作。

于 2012-09-02T16:42:02.927 回答