可展開的列表組件

<colors.xml>

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="gray" >#ccc</color>
</resources>

 

 

<ids.xml>

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="list"/>
</resources>

<main.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/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:childIndicator="@drawable/ic_launcher"
        android:childDivider="@color/gray"
        />
</LinearLayout>

 

<mainActivity.java>

import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.app.Activity;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  //做一個ExpandableListAdapter對象
  ExpandableListAdapter adapter=new BaseExpandableListAdapter() {

   int [] logos=new int[]
   {R.drawable.p,R.drawable.z,R.drawable.s};
   private String[] armTiypes=new String[]{
     "神族兵種","蟲族兵種","人族 兵種"
   };
   private String[][]arms=new String[][]{
   {"神族兵種","龍騎士","黑暗聖堂","電兵"},
   {"小狗","刺蛇","飛龍","自爆飛機"},
   {"機槍兵","護士MM","幽靈"}
   };
   @Override
   public boolean isChildSelectable(int groupPosition, int childPosition) {

    return true;
   }

   @Override
   public boolean hasStableIds() {
    return true;
   }

   @Override
   public View getGroupView(int groupPosition, boolean isExpanded,
     View convertView, ViewGroup parent) {
    LinearLayout ll =new LinearLayout(MainActivity.this);
    ll.setOrientation(0);
    ImageView logo= new ImageView(MainActivity.this);
    logo.setImageResource(logos[groupPosition]);
    ll.addView(logo);
    TextView textView=getTextView();
    textView.setText(getGroup(groupPosition).toString());
    ll.addView(textView);
    return ll;
   }

   @Override
   public long getGroupId(int groupPosition) {
    return groupPosition;
   }

   @Override
   public int getGroupCount() {
    return armTiypes.length;
   }
   //獲取指定組位置處的組數據
   @Override
   public Object getGroup(int groupPosition) {
    return armTiypes[groupPosition];
   }

   @Override
   public int getChildrenCount(int groupPosition) {
    return arms[groupPosition].length;
   }
   //該方法決定每個子選項的外觀
   @Override
   public View getChildView(int groupPosition, int childPosition,
     boolean isLastChild, View convertView, ViewGroup parent) {
    TextView textView=getTextView();
    textView.setText(getChild(groupPosition,childPosition).toString());
    return textView;
   }

   @Override
   public long getChildId(int groupPosition, int childPosition) {
    return groupPosition;
   }
   //獲取指定組位置,指定子列表項處理的子列表數據
   @Override
   public Object getChild(int groupPosition, int childPosition) {
    return arms[groupPosition][childPosition];
   }
   private TextView getTextView(){
    AbsListView.LayoutParams lp=new AbsListView.LayoutParams(
      ViewGroup.LayoutParams.FILL_PARENT,64
      );
    TextView textview=new TextView(MainActivity.this);
    textview.setLayoutParams(lp);
    textview.setGravity(Gravity.CENTER_VERTICAL| Gravity.LEFT);
    textview.setPadding(36, 0, 0, 0);
    textview.setTextSize(20);
    return textview;
   }
  };
  ExpandableListView expandListView=(ExpandableListView) findViewById(R.id.list);
  expandListView.setAdapter(adapter);
 }

 

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章