填写ListView

时间:2012-09-02 15:56:57

标签: android listview

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

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的{​​{1}}中添加view,其中包含以下属性:

  1. 高度:fill_parent
  2. 宽度:wrap_content
  3. 文字:文字查看条目

    getView
  4. 请注意,我想动态地将子项添加到ListViewItem。您可以假设,我有TextView数组,并希望使用此项填充我的listView。我该怎么做这个场景?我在其他主题和Google上搜索时找不到任何结果。那么,有没有人可以帮我解决我的问题?

    提前致谢:)

1 个答案:

答案 0 :(得分:1)

这是我的getView()方法。

main.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>

item.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。您可以在自己的代码中执行此操作。