将textview显示为列表视图的最后一项

时间:2017-06-01 05:57:33

标签: java android

我想将textview显示为列表视图的最后一项。这是我的xml代码 -

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.activity.MainActivity">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingTop="8dp">

        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/swiperefresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ListView
                android:id="@android:id/list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:clipToPadding="false"
                android:paddingBottom="60dp" />

        </android.support.v4.widget.SwipeRefreshLayout>

    </FrameLayout>
</LinearLayout>

列表视图将在另一个下方显示卡片视图。但是我想将textview作为列表中的最后一项。 例如,如果我有1张卡片视图,我需要在下面显示textview。 如果我有2张卡片视图,我需要在第二张卡片视图下方显示textview。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

这可以通过在列表视图中添加页脚来解决。

这很简单,只需使用所需的Textview创建一个布局。将其作为页脚添加到列表视图中,如下所示。

listView.addFooterView(footerView);

请参阅此Question添加页脚的更多参考。

答案 1 :(得分:1)

像这样夸大你的观点。

     LayoutInflater layoutInflater = (LayoutInflater) 
     context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     View root = layoutInflater.inflate(R.layout.yourLayout, null);
     // for footerclick
     //add code her root.setOnClickListner(...)
     listView.addFooterView(root, null, true);

点击试试这个

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     public void onItemClick(AdapterView<?> listView, View view, final int position, long id) {
          if(position < adapter.getCount()){ 
            Log.d("test","working");
          }
     }
 });

关于刷新列表视图

mListView.removeFooterView(root);

答案 2 :(得分:0)

您可以将ListView包装在LinearLayout中,并在其下方添加TextView。然后使用NestedScrollView将其包装并将fillViewPort设置为true,以便在TextView超出屏幕时仍能滚动

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.activity.MainActivity">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingTop="8dp">

        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/swiperefresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v4.widget.NestedScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fillViewport="true">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">

                    <ListView
                        android:id="@android:id/list"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:clipToPadding="false"
                        android:paddingBottom="60dp" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Footer text view" />

                </LinearLayout>

            </android.support.v4.widget.NestedScrollView>

        </android.support.v4.widget.SwipeRefreshLayout>

    </FrameLayout>

</LinearLayout>