zoukankan      html  css  js  c++  java
  • android学习笔记13——ExpandableListView

    ExpandableListView==>可展开的列表组件

    ==》

    ExpandableListView是ListView的子类,对其进行了扩展,其将应用中的列表项分为几组,每组中又包含多个列表项;

    ExpandableListView的用法和ListView非常像,只是其所显示的列表项应该由ExpandableListAdapter提供;

    ExpandableListView支持的额外属性:

    android:childDivider 指定各组内各子列表项之间的分隔条
    android:childIndicator 显示在子列表项旁的Drawable对象
    android:groupIndicator 显示在组列表项旁的Drawable对象

    实例:

    布局文件==》
    <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="fill_parent"
            android:layout_height="fill_parent"
            android:background="#ffffff"
            android:cacheColorHint="#00000000"
            android:listSelector="#00000000" >
        </ExpandableListView>
    
    </LinearLayout>
    
    实现代码==》
    package com.example.myexpandablelistview;
    
    import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.Menu;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.Window;
    import android.widget.AbsListView;
    import android.widget.BaseExpandableListAdapter;
    import android.widget.ExpandableListAdapter;
    import android.widget.ExpandableListView;
    import android.widget.ExpandableListView.OnChildClickListener;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity
    {
    	// 设置组视图的图片
    	private int[] logos = new int[]
    	{ R.drawable.one, R.drawable.two, R.drawable.three };
    	// 设置组视图的显示文字
    	private String[] generalsTypes = new String[]
    	{ "One", "Two", "Three" };
    	// 子视图显示文字
    	private String[][] generals = new String[][]
    	{
    	{ "西瓜", "樱桃", "草莓" },
    	{ "葡萄", "梨子", "青苹果" },
    	{ "香蕉", "橙子", "芒果" } };
    
    	// 子视图图片
    	public int[][] generallogos = new int[][]
    	{
    	{ R.drawable.one, R.drawable.one, R.drawable.one },
    	{ R.drawable.two, R.drawable.two, R.drawable.two, },
    	{ R.drawable.three, R.drawable.three, R.drawable.three } };
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
    		setContentView(R.layout.activity_main);
    		final ExpandableListAdapter adapter = new BaseExpandableListAdapter()
    		{
    			// 自己定义一个获得文字信息的方法
    			TextView getTextView()
    			{
    				@SuppressWarnings("deprecation")
    				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);
    				textView.setPadding(36, 0, 0, 0);
    				textView.setTextSize(20);
    				textView.setTextColor(Color.BLACK);
    				return textView;
    			}
    
    			// 重写ExpandableListAdapter中的各个方法
    			@Override
    			public int getGroupCount()
    			{
    				return generalsTypes.length;
    			}
    
    			@Override
    			public Object getGroup(int groupPosition)
    			{
    				return generalsTypes[groupPosition];
    			}
    
    			@Override
    			public long getGroupId(int groupPosition)
    			{
    				return groupPosition;
    			}
    
    			@Override
    			public int getChildrenCount(int groupPosition)
    			{
    				return generals[groupPosition].length;
    			}
    
    			@Override
    			public Object getChild(int groupPosition, int childPosition)
    			{
    				return generals[groupPosition][childPosition];
    			}
    
    			@Override
    			public long getChildId(int groupPosition, int childPosition)
    			{
    				return childPosition;
    			}
    
    			@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]);
    				logo.setPadding(50, 0, 0, 0);
    				ll.addView(logo);
    				TextView textView = getTextView();
    				textView.setTextColor(Color.BLACK);
    				textView.setText(getGroup(groupPosition).toString());
    				ll.addView(textView);
    
    				return ll;
    			}
    
    			@Override
    			public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
    					View convertView, ViewGroup parent)
    			{
    				LinearLayout ll = new LinearLayout(MainActivity.this);
    				ll.setOrientation(0);
    				ImageView generallogo = new ImageView(MainActivity.this);
    				generallogo.setImageResource(generallogos[groupPosition][childPosition]);
    				ll.addView(generallogo);
    				TextView textView = getTextView();
    				textView.setText(getChild(groupPosition, childPosition).toString());
    				ll.addView(textView);
    				return ll;
    			}
    
    			@Override
    			public boolean isChildSelectable(int groupPosition, int childPosition)
    			{
    				return true;
    			}
    		};
    
    		ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.list);
    		expandableListView.setAdapter(adapter);
    
    		// 设置item点击的监听器
    		expandableListView.setOnChildClickListener(new OnChildClickListener()
    		{
    			@Override
    			public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
    					int childPosition, long id)
    			{
    
    				Toast.makeText(MainActivity.this,
    						"你点击了" + adapter.getChild(groupPosition, childPosition), Toast.LENGTH_SHORT)
    						.show();
    
    				return false;
    			}
    		});
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu)
    	{
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    }
    

    实现效果:

  • 相关阅读:
    JNDI 是什么
    RuntimeException和非RuntimeException的区别
    dynamicinsert,dynamicupdate能够性能上的少许提升
    Session,有没有必要使用它?[转]
    c# textbox中光标所在行命令及选中命令移动到最后一行且光标提前[转]
    C#分布式事务(TransactionScope )
    .net中的分布式事务
    大道至简,职场上做人做事做管理[转]
    C#中TreeView的CheckBox的两种级联选择
    C# winform TreeView中关于checkbox选择的完美类[转]
  • 原文地址:https://www.cnblogs.com/YYkun/p/5764643.html
Copyright © 2011-2022 走看看