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

Fig2-добавить дополнительную запись 10 добавлено в listview
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