Android學習筆記(34)— 可下拉ListView(ExpandableListView)的使用

來源:互聯網
上載者:User

今天在網上看到ExpandableListView的效果,之前一直沒發現。感覺挺好用的,借用下別人的例子。

主檔案 .java

import java.util.ArrayList;import java.util.List;import android.app.ExpandableListActivity;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnChildClickListener;import android.widget.TextView;public class MainActivity extends ExpandableListActivity {          List<String> group;           //組列表      List<List<String>> child;     //子列表      ContactsInfoAdapter adapter;  //資料配接器            /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          requestWindowFeature(Window.FEATURE_NO_TITLE);  //設定為無標題          setContentView(R.layout.activity_main);                  initializeData();          getExpandableListView().setAdapter(new ContactsInfoAdapter());                   getExpandableListView().setOnChildClickListener(new OnChildClickListener() {@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {// TODO Auto-generated method stubSystem.out.println("groupPosition--"+groupPosition+"--childPosition--"+childPosition);return false;}});    }            private void initializeData(){          group = new ArrayList<String>();          child = new ArrayList<List<String>>();                    addIndex("Index00",new String[]{"item00","item01","item02"});          addIndex("Index01",new String[]{"item10","item11","item12"});         addIndex("Index02",new String[]{"item20","item21","item22"});    }            /**       * 類比給組、子列表添加資料       * @param g-group       * @param c-child       */      private void addIndex(String g,String[] c){          group.add(g);          List<String> childitem = new ArrayList<String>();          for(int i=0;i<c.length;i++){              childitem.add(c[i]);          }          child.add(childitem);      }            class ContactsInfoAdapter extends BaseExpandableListAdapter{             @Override          public Object getChild(int groupPosition, int childPosition) {              return child.get(groupPosition).get(childPosition);          }                    @Override          public long getChildId(int groupPosition, int childPosition) {              return childPosition;          }                    @Override          public int getChildrenCount(int groupPosition) {              return child.get(groupPosition).size();          }                    @Override          public View getChildView(int groupPosition, int childPosition,                  boolean isLastChild, View convertView, ViewGroup parent) {              String string = child.get(groupPosition).get(childPosition);               return getGenericView(string);          }                    @Override          public Object getGroup(int groupPosition) {              return group.get(groupPosition);          }                           @Override          public long getGroupId(int groupPosition) {              return groupPosition;          }                       @Override          public int getGroupCount() {              return group.size();          }                       @Override          public View getGroupView(int groupPosition, boolean isExpanded,                  View convertView, ViewGroup parent) {              String string = group.get(groupPosition);                return getGenericView(string);          }            //建立組/子視圖            public TextView getGenericView(String s) {                  AbsListView.LayoutParams lp = new AbsListView.LayoutParams(                        ViewGroup.LayoutParams.FILL_PARENT, 40);              TextView text = new TextView(MainActivity.this);                text.setLayoutParams(lp);                text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);                text.setPadding(36, 0, 0, 0);                             text.setText(s);                return text;            }                                @Override          public boolean hasStableIds() {              // TODO Auto-generated method stub              return false;          }                   @Override          public boolean isChildSelectable(int groupPosition, int childPosition) {              // TODO Auto-generated method stub              return true;          }                }  }  

布局檔案 .xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <ExpandableListView        android:id="@id/android:list"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_weight="1"        android:drawSelectorOnTop="false" /></LinearLayout>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.