如何创建Android Fragment作为列表项?

时间:2014-03-10 14:18:09

标签: android android-listview android-fragments

我想创建一个以Fragment作为列表项的Android应用。如果你知道,请有人帮助我。提前谢谢......

2 个答案:

答案 0 :(得分:0)

如果您想制作自定义列表元素,例如,将列表项设置为包含多个内容的另一个布局,例如ImagesViews,Text Views等。每个项目都有不同的视图。我正在做这样的事情:

第1步:在我的适配器中,我将布局设置为行元素。

以下是代码:

这里我有两种不同的布局..一种用于主行,另一种用于元素。 (你在getView()中看到的其他布局)。

class yourAdapter extends BaseAdapter {

        Context context;
        String[] data;

        private LayoutInflater inflater = null;

        public yourAdapter(Context context, String[] data) {

            this.context = context;
            this.data = data;
            inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {

            return data.length;
        }

        @Override
        public Object getItem(int position) {

            return data[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

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

            View vi = convertView;
            if (vi == null)
                vi = inflater.inflate(R.layout.row, null);

            if (position == 0) {

                vi = inflater.inflate(R.layout.help_row1, null);

            }
            if (position == 1) {

                vi = inflater.inflate(R.layout.help_row_2, null);

            }
            if (position == 2) {

                vi = inflater.inflate(R.layout.help_row_3, null);

            }
            if (position == 3) {

                vi = inflater.inflate(R.layout.help_row_4, null);

            }

            return vi;
        }
    }

第2步:这就是我的onCreate()的样子:

注意:当我设置适配器时,您可以看到有4个字符串,因为使用了4个布局。

现在,您可以只使用自定义布局在列表视图中使用任意数量的项目,而不是仅使用四种布局。取决于您的数组大小或字符串数​​组长度。在这种情况下,我只使用4个布局,所以我没有做任何额外的事情。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.help);

        TextView close = (TextView) findViewById(R.id.close_button);
        close.setOnClickListener(this);

        mActivity = this;

        listview = (ListView) findViewById(R.id.helpListView);
        mAdapter = new yourAdapter(this, new String[] { "Item1", "Item2",
                "Item3", "Item4" });

        listview.setAdapter(mAdapter);
    }

第3步:此示例使用了布局:

help.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="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/header_gradient"
        android:gravity="center"
        android:text="Help Page"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#0099cc"
        android:textSize="24sp"
        android:textStyle="bold" />

    <ListView
        android:id="@+id/helpListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.63"
        android:divider="#000000"
        android:dividerHeight="6dp" >
    </ListView>

    <TextView
        android:id="@+id/close_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/header_gradient"
        android:gravity="center"
        android:text="Close"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#0099cc"
        android:textSize="24sp"
        android:textStyle="bold" />

</LinearLayout>

row.xml 在此处使用视图。

<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

</View>

最后,其中一个布局:

<强> help_row1

<?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="match_parent"
    android:orientation="vertical" 
    android:padding="10dp"
    android:background="#666666">


    <TextView
        android:id="@+id/help_text_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Step 1:"
        android:textColor="#0099cc"
        android:layout_marginTop="10dp"
        android:background="@drawable/header_gradient"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/help_text_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Set Destination by entering number or select the contact from your contact list."
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/help_text_3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="For Example: Just Enter the number in the empty text field or simply select the destination by choosing contact from the contact list."
        android:layout_marginTop="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_marginTop="5dp"
        android:src="@drawable/asset1" />

</LinearLayout>

就是这样。现在,您可以使用此示例来构建自己的自定义列表视图。 在您的情况下,您可以使用片段并为视图使用不同的数据。

希望这个例子能说明如何将list作为行用于listview。

如果有人能够更好地回答这个问题,那对我来说也会非常有帮助。谢谢。:)

答案 1 :(得分:-1)

在自定义适配器内部,而不是使用TextView(或其他组件)使用FragmentContainer