Как добавить нижний колонтитул в ListView?
Я разрабатываю приложение. В моем приложении я использую Listview для отображения данных с использованием синтаксического анализа dom, я хочу использовать нижний колонтитул в списке, когда я нажимаю нижний колонтитул, добавляет дополнительные данные в список, я прикреплял изображение, я хотел бы что дизайн и процесс, пожалуйста, обратитесь к image1 и imgae2.Я упоминаю нижний колонтитул в красном прямоугольнике
Рис .1-Нижний колонтитул, как "Другие новости"
![alt text]()
![alt text]()
Рис. 2 - добавьте еще 10 записей, добавленных в список.
Ответы
Ответ 1
Создайте макет представления нижнего колонтитула, состоящий из текста, который вы хотите установить как нижний колонтитул, а затем попробуйте
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);
}
}
Ответ 2
Я знаю, что это очень старый вопрос, но я искал свой путь здесь и нашел ответ, который не был удовлетворен на 100%, потому что, как упоминал gcl1, таким образом нижний колонтитул на самом деле не является нижним колонтитулом на экране - это просто "добавление" в список.
Итог - для других, кто может пойти сюда, здесь я нашел следующее предложение: Фиксированный и всегда видимый нижний колонтитул ниже 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>
Ответ 3
Ответы здесь немного устарели. Хотя код остается неизменным, некоторые изменения в поведении.
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 может обернуть поставляемый курсор тем, который будет также учитывать представления верхнего и нижнего колонтитула.
Из Китката это изменилось.
Примечание. При первом вводе этот метод можно вызвать только до установки адаптера с помощью setAdapter (ListAdapter). Начиная с KITKAT, этот метод можно вызвать в любое время. Если адаптер ListView не расширяет HeaderViewListAdapter, он будет обернут поддерживающим экземпляром WrapperListAdapter.
Документация
Ответ 4
Если ListView является дочерним элементом ListActivity:
getListView().addFooterView(
getLayoutInflater().inflate(R.layout.footer_view, null)
);
(внутри onCreate())
Ответ 5
Активность, в которой вы хотите добавить нижний колонтитул 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>
Ответ 6
В этом вопросе лучший ответ не работает для меня. После этого я нашел этот метод, чтобы показать нижний колонтитул списка,
LayoutInflater inflater = getLayoutInflater();
ViewGroup footerView = (ViewGroup)inflater.inflate(R.layout.footer_layout,listView,false);
listView.addFooterView(footerView, null, false);
И создать новый макет вызова footer_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Done"
android:textStyle="italic"
android:background="#d6cf55"
android:padding="10dp"/>
</LinearLayout>
Если не работа, обратитесь к этой статье услышать