1. 程式人生 > >在listview的前面或後面添加布局控制元件

在listview的前面或後面添加布局控制元件

在開發中我們可能會遇到這樣的需求 在listview最下面新增一個按鈕 但是這個按鈕不是一直顯示在螢幕上

它就像listview 最後一個view 根據使用者的移動來顯示 應該怎麼實現呢 這裡要用到一個方法

ListView listView = this.getListView();

Button buttonFooter = new Button(this);
         buttonFooter.setText("下面的按鈕");
        
         buttonFooter.setOnClickListener(new View.OnClickListener() {
            
             @Override
             public void onClick(View v) {
             }
         });
         listView.addFooterView(buttonFooter);

如果你想在下面新增更加複雜的控制元件怎麼辦呢 這個時候我們可以定義一下需要新增控制元件的佈局檔案

     LayoutInflater infla = LayoutInflater.from(this);   
      View footView = infla.inflate(R.layout.more_button, null);  
         ListView listView = this.getListView();   
     listView.addFooterView(footView, null, true);

如果想在它前面新增用addHeaderView 這個方法就可以

===================================================================

ListView 實現更多按鈕

  1. view plaincopy to clipboardprint?  
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="horizontal"
  4. android:layout_width="fill_parent"
  5. android:gravity="center_horizontal"
  6. android:padding
    ="3dp"
  7. android:layout_height="fill_parent">
  8. <TextView
  9. android:id="@id/android:empty"
  10. android:layout_width="wrap_content"
  11. android:layout_height="fill_parent"
  12. android:gravity="center"
  13. android:padding="5dp"
  14. android:text="Loading more ..."/>
  15. </LinearLayout>
Java程式碼
  1. publicclass MoreListTest extends ListActivity {    
  2. private ListView mListView;    
  3. private ArrayList<String> mItems;    
  4. private ArrayAdapter<String> mAdapter;    
  5. privateboolean loadingMore = false;    
  6. privateint itemsCount = 15//新新增的資料個數  
  7. @Override
  8. protectedvoid onCreate(Bundle savedInstanceState) {    
  9. super.onCreate(savedInstanceState);    
  10. /* 新增初始顯示的資料 */
  11. addData();    
  12. mListView = getListView();//獲得listview物件  
  13. /* 將footview的佈局轉換成View物件*/
  14. View foot = ((LayoutInflater) this
  15. .getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(    
  16. R.layout.foot, nullfalse);    
  17. /* 給footview新增點選事件監聽器*/
  18. foot.setOnClickListener(new View.OnClickListener() {    
  19. @Override
  20. publicvoid onClick(View v) {    
  21. loadingMore =true;    
  22. for (int i = 0; i < itemsCount; i++) {    
  23. mItems.add("new "+i); //新增資料  
  24. }    
  25. mAdapter.notifyDataSetChanged(); //通知介面卡重新適配  
  26. }    
  27. });    
  28. /* 給listview新增footview*/
  29. mListView.addFooterView(foot);    
  30. mAdapter = new ArrayAdapter<String>(this,    
  31. android.R.layout.simple_list_item_1, mItems);    
  32. /* listview新增介面卡*/
  33. mListView.setAdapter(mAdapter);    
  34. }    
  35. privatevoid addData() {    
  36. mItems = new ArrayList<String>();    
  37. for (int i = 0; i < 5; i++) {    
  38. mItems.add(i+"");    
  39. }    
  40. }