Как добавить нижний колонтитул в ListView?



Я разрабатываю приложение,в моем приложении,я использую ListView для отображения данных, используя DOM-парсинг,я хочу, чтобы нижний колонтитул в ListView,когда я нажмите кнопку нижний колонтитул дополнительных данных добавить в список посмотреть,я прикрепил изображение,я бы хотел, чтобы дизайн и процесс,см. рис1 и imgae2.Я упоминаю нижний колонтитул в красном прямоугольнике



Fig1-нижний колонтитул, как "больше новостей"
alt text



alt text



Fig2-добавить дополнительную запись 10 добавлено в listview

513   5  

5 ответов:

создайте макет нижнего колонтитула, состоящий из текста, который вы хотите установить в качестве нижнего колонтитула, а затем попробуйте

View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
ListView.addFooterView(footerView);

макет для колонтитула может быть что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingTop="7dip"
    android:paddingBottom="7dip"
    android:orientation="horizontal"
    android:gravity="center">

    <LinearLayout 
        android:id="@+id/footer_layout" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_gravity="center">

    <TextView 
        android:text="@string/footer_text_1" 
        android:id="@+id/footer_1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="14dip" 
        android:textStyle="bold" 
        android:layout_marginRight="5dip" />
    </LinearLayout>
</LinearLayout> 

класс активности может быть:

public class MyListActivty extends ListActivity {
    private Context context = null;
    private ListView list = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        list = (ListView)findViewById(android.R.id.list);

        //code to set adapter to populate list
        View footerView =  ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
        list.addFooterView(footerView);
    }
}

Я знаю, что это очень старый вопрос, но я погуглил свой путь сюда и нашел ответ, предоставленный не на 100% удовлетворительный, потому что, как упоминалось в gcl1, нижний колонтитул на самом деле не является нижним колонтитулом экрана - это просто "дополнение" к списку.

итог - для других, кто может google свой путь здесь - я нашел следующее предложение здесь:фиксированный и всегда видимый нижний колонтитул ниже ListFragment

попробуйте сделать следующим образом, где упор делается на кнопка (или любой элемент нижнего колонтитула), перечисленные сначала в XML - а затем список добавляется как "layout_above":

<RelativeLayout>

<Button android:id="@+id/footer" android:layout_alignParentBottom="true"/> 
<ListView android:id="@android:id/list" **android:layout_above**="@id/footer"> <!-- the list -->

</RelativeLayout>

ответы здесь, немного устаревшие. Хотя код остается тем же, есть некоторые изменения в поведении.

public class MyListActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        TextView footerView = (TextView) ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false);
        getListView().addFooterView(footerView);
        setListAdapter(new ArrayAdapter<String>(this, getResources().getStringArray(R.array.news)));
    }
}

информация о addFooterView() метод

добавить фиксированный вид, чтобы появиться в нижней части списка. Если addFooterView() вызывается несколько раз, представления будут отображаться в том порядке, в котором они были добавлены. Представления, добавленные с помощью этого вызова, могут фокусироваться, если они хотят.

большинство ответов выше подчеркивают очень важный момент -

addFooterView() должен быть вызван перед вызовом setAdapter().Это значит, что ListView может обернуть предоставленный курсор с тем, который также будет учитывать представления верхнего и нижнего колонтитулов.

от Kitkat это изменилось.

Примечание: при первом введении этот метод можно было вызвать только перед установкой адаптера с помощью setAdapter(ListAdapter). Начиная с KITKAT, этот метод может быть вызван в любое время. Если адаптер ListView не расширяется HeaderViewListAdapter, он будет обернут с поддерживающим экземпляром WrapperListAdapter.

документация

Если ListView является дочерним элементом ListActivity:

getListView().addFooterView(
    getLayoutInflater().inflate(R.layout.footer_view, null)
);

(внутри onCreate ())

действие, в котором вы хотите добавить нижний колонтитул listview, и я также создаю событие на Щелчке нижнего колонтитула listview.

  public class MainActivity extends Activity
{

        @Override
        protected void onCreate(Bundle savedInstanceState)
         {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            ListView  list_of_f = (ListView) findViewById(R.id.list_of_f);

            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View view = inflater.inflate(R.layout.web_view, null);  // i have open a webview on the listview footer

            RelativeLayout  layoutFooter = (RelativeLayout) view.findViewById(R.id.layoutFooter);

            list_of_f.addFooterView(view);

        }

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg" >

    <ImageView
        android:id="@+id/dept_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/dept_nav" />

    <ListView
        android:id="@+id/list_of_f"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/dept_nav"
        android:layout_margin="5dp"
        android:layout_marginTop="10dp"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:listSelector="@android:color/transparent" >
    </ListView>

</RelativeLayout>

Comments

    Ничего не найдено.