• 使用 ExpandableListView 实现折叠ListView


    1:layout/expandablelistview_groups.xml   标题文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView 
                android:layout_width="100dp"   
                android:layout_height="wrap_content"   
                android:paddingLeft="40dp"     
                android:text="标题:" />
            <TextView
                android:id="@+id/tvEmailTitle"   
                android:layout_width="wrap_content"   
                android:layout_height="wrap_content"      
                android:text="承运人自有车辆、船舶及营运资质通知" />
        </LinearLayout>
        
        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView 
                android:layout_width="100dp"   
                android:layout_height="wrap_content"   
                android:paddingLeft="40dp"     
                android:text="发件人:" />
            <TextView 
                android:layout_width="wrap_content"   
                android:layout_height="wrap_content"      
                android:text="我"/>
        </LinearLayout>
        
        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView 
                android:layout_width="100dp"   
                android:layout_height="wrap_content"   
                android:paddingLeft="40dp"     
                android:text="时间:" />
            <TextView 
                android:id="@+id/tvEmailSendTimes"
                android:layout_width="wrap_content"   
                android:layout_height="wrap_content"      
                android:text="2013-11-11 19:25:16"/>
        </LinearLayout>
    </LinearLayout>

    2:layout/expandablelistview_child.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" >
            <TextView     
                android:id="@+id/tvEmailContent"   
                android:layout_width="fill_parent"    
                android:layout_height="fill_parent"   
                android:lineSpacingExtra="2dp"
                android:lineSpacingMultiplier="1.2"  
                android:text="this is content" /> 
    </LinearLayout>

    3:MainActivity.java

    public class MainActivity extends Activity {
        private  ExpandableListView  expandableListView_one;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            expandableListView_one =(ExpandableListView)findViewById(R.id.expandableListView);  
    
            //expandableListView.setDivider();这个是设定每个Group之间的分割线。
            //expandableListView.setGroupIndicator();这个是设定每个Group之前的那个图标。
            
            
            //创建二个一级条目标题   
            Map<String, String> title_1 = new HashMap<String, String>();  
            Map<String, String> title_2 = new HashMap<String, String>(); 
            
            title_1.put("tvEmailTitle", "第一封邮件");  
            title_1.put("tvEmailSendTimes", "2013-11-11 20:08:20");
            
            title_2.put("tvEmailTitle", "第二封邮件");
            title_2.put("tvEmailSendTimes", "2013-11-11 20:08:20");
            
            //创建一级条目容器   
            List<Map<String, String>> groups = new ArrayList<Map<String,String>>();          
            groups.add(title_1);  
            groups.add(title_2);  
    
            
            //创建二级条目内容   
            //内容一   
            Map<String, String> content_1 = new HashMap<String, String>();  
            String str="您好,R.java是项目中所有资源文件的索引文件,是由系统自动生成,不需要开发者手动的编辑。";
            content_1.put("tvEmailContent", str);  
            
            
            List<Map<String, String>> childs_1 = new ArrayList<Map<String,String>>();  
            childs_1.add(content_1);  
            
            
            //内容一   
            Map<String, String> content_2 = new HashMap<String, String>();  
            content_2.put("tvEmailContent", str);  
                    
            List<Map<String, String>> childs_2 = new ArrayList<Map<String,String>>();  
            childs_2.add(content_2);  
            
             //存放两个内容, 以便显示在列表中   
            List<List<Map<String, String>>> childs = new ArrayList<List<Map<String,String>>>();  
            childs.add(childs_1);  
            childs.add(childs_2); 
            
            /*
            使用SimpleExpandableListAdapter显示ExpandableListView 
            参数1.上下文对象Context 
            参数2.一级条目目录集合 
            参数3.一级条目对应的布局文件 (expandablelistview_groups.xml文件
            参数4.标题,map中的key,指定要显示的对象 
            参数5.与参数4对应,指定要显示在groups中的id 
            参数6.二级条目目录集合 
            参数7.二级条目对应的布局文件 (expandablelistview_child)
            参数8.展开内容,map中的key,指定要显示的对象
            参数9.与参数8对应,指定要显示在childs中的id 
            */
            SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
                    this,
                    groups,
                    R.layout.expandablelistview_groups,
                    new String[]{"tvEmailTitle", "tvEmailSendTimes"},
                    new int[]{R.id.tvEmailTitle, R.id.tvEmailSendTimes},
                    childs,
                    R.layout.expandablelistview_child,
                    new String[]{"tvEmailContent"},
                    new int[]{R.id.tvEmailContent}
                );
            //将适配器加入列表
            expandableListView_one.setAdapter(adapter);
            //注册事件
            expandableListView_one.setOnChildClickListener(listener);
        }
        
        private OnChildClickListener listener = new OnChildClickListener(){
            @Override
            public boolean onChildClick(ExpandableListView arg0, View arg1,
                    int arg2, int arg3, long arg4) {
                Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_SHORT).show();
                return false;
            }
        };
    }
    
    
  • 相关阅读:
    c++ 队列
    17:特殊类成员:函数指针5
    c++ deque 双端队列
    18:字符串-char型字符串
    c++ 16 this 和 继承 及继承机制中的构造函数 与 析构函数
    c++ string char* const char*
    c++ 小片段
    google protobuf 使用示例
    hibernate-cache
    hibernate-criteria查询(二)
  • 原文地址:https://www.cnblogs.com/yshyee/p/3418464.html
Copyright © 2020-2023  润新知