您的位置:首页 > 移动开发 > Android开发

android里面ExpandableListView 的运用

2014-12-23 16:41 281 查看
  仅供以后学习。
package com.example.expanddemo;

import android.os.Bundle;
import android.app.Activity;
import android.database.DataSetObserver;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ExpandableListAdapter myadapter=new ExpandableListAdapter() {
int[] ids={android.R.drawable.alert_dark_frame,
android.R.drawable.alert_light_frame,
android.R.drawable.btn_default};
String names[]={"老虎","狮子","大象"};
String detail[][]={
{"德玛","卢锡安","vn"},
{"凤女","小炮","锤石"},
{"猴子","战争","兰博"}
};
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub

}

@Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub

}

@Override
public void onGroupExpanded(int groupPosition) {
// TODO Auto-generated method stub

}

@Override
public void onGroupCollapsed(int groupPosition) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "关闭", Toast.LENGTH_LONG).show();
}

@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LinearLayout ll=new LinearLayout(getApplicationContext());
ll.setOrientation(0);
ImageView imageView=new ImageView(getApplicationContext());
imageView.setImageResource(ids[groupPosition]);
ll.addView(imageView);
TextView tv=new TextView(getApplicationContext());
tv.setText(names[groupPosition]);
ll.addView(tv);
return ll;
}

@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return names.length;
}

@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return names[groupPosition];
}

@Override
public long getCombinedGroupId(long groupId) {
// TODO Auto-generated method stub
return groupId;
}

@Override
public long getCombinedChildId(long groupId, long childId) {
// TODO Auto-generated method stub
return childId;
}

@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return detail[groupPosition].length;
}

@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

TextView tv=new TextView(getApplicationContext());
tv.setText(detail[groupPosition][childPosition]);
return tv;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}

@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return detail[groupPosition][childPosition];
}

@Override
public boolean areAllItemsEnabled() {
// TODO Auto-generated method stub
return false;
}
};
ExpandableListView ep=(ExpandableListView) findViewById(R.id.expandableListView1);
ep.setAdapter(myadapter);
}

}onGroupCollapsed
ExpandableListView运用的关键在于 ExpandableListAdapter的设置。 ExpandableListAdapter中方法onGroupExpanded设置展开时的动作,onGroupCollapsed设置收起时的动作。 getGroupView需要获取Group的view,可以构造一个一维数组结合groupPosition使用。getChildView返回展开之后的view,可以构造一个二维数组,结合guropPosition和childPosition使用。
 虽然很丑,但是已经能够说明问题了。
</pre><pre class="java" name="code">




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: