• Android ListView分组布局改进


    由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效果图:


    然后是实现该ListView布局的主要代码:

    1、程序主界面 SeparateListView.java

    1. package whu.iss.wuxianglong;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.List;  
    5.   
    6. import android.app.Activity;  
    7. import android.content.Context;  
    8. import android.os.Bundle;  
    9. import android.view.LayoutInflater;  
    10. import android.view.View;  
    11. import android.view.ViewGroup;  
    12. import android.widget.ArrayAdapter;  
    13. import android.widget.ListView;  
    14. import android.widget.TextView;  
    15.   
    16. public class SeparateListView extends Activity {  
    17.     ListView listView;  
    18.     MyAdapter myAdapter;  
    19.     public List<String> listTag = new ArrayList<String>();  
    20.   
    21.     /** Called when the activity is first created. */  
    22.     @Override  
    23.     public void onCreate(Bundle savedInstanceState) {  
    24.         super.onCreate(savedInstanceState);  
    25.         setContentView(R.layout.main);  
    26.           
    27.         listView = (ListView) findViewById(R.id.list);  
    28.         myAdapter = new MyAdapter(this,  
    29.                 android.R.layout.simple_expandable_list_item_1, getData());  
    30.         listView.setAdapter(myAdapter);  
    31.     }  
    32.     private List<String> getData() {  
    33.         List<String> data = new ArrayList<String>();  
    34.         int i = 0;  
    35.   
    36.         data.add("A");  
    37.         listTag.add("A");  
    38.         data.add("aa试数据" + (i++));  
    39.         data.add("a试数据" + (i++));  
    40.         data.add("aa试数据" + (i++));  
    41.         listTag.add("B");  
    42.         data.add("B");  
    43.         data.add("bb试数据" + (i++));  
    44.         data.add("b试数据" + (i++));  
    45.         data.add("b试数据" + (i++));         
    46.         data.add("b试数据" + (i++));  
    47.         listTag.add("C");  
    48.         data.add("C");  
    49.         data.add("c测试数据" + (i++));  
    50.         data.add("c测试数据" + (i++));  
    51.         listTag.add("D");  
    52.         data.add("D");  
    53.         data.add("d测试数据" + (i++));  
    54.         data.add("d测试数据" + (i++));  
    55.         data.add("d测试数据" + (i++));  
    56.         listTag.add("E");  
    57.         data.add("E");  
    58.         data.add("e测试数据" + (i++));  
    59.         data.add("e测试数据" + (i++));  
    60.         data.add("e测试数据" + (i++));  
    61.         listTag.add("F");  
    62.         data.add("F" );  
    63.         data.add("f测试数据" + (i++));  
    64.         return data;  
    65.     }  
    66.   
    67.       
    68.     class MyAdapter extends ArrayAdapter<String> {  
    69.   
    70.         public MyAdapter(Context context,  int textViewResourceId,  
    71.                 List<String> objects) {  
    72.             super(context,  textViewResourceId, objects);  
    73.           
    74.         }  
    75.   
    76.         @Override  
    77.         public boolean areAllItemsEnabled() {  
    78.             return false;   
    79.         }  
    80.   
    81.         @Override  
    82.         public boolean isEnabled(int position) {  
    83.             // 如果-开头,则该项不可选   
    84.             return !listTag.contains(getItem(position));   
    85.         }  
    86.   
    87.         @Override  
    88.         public View getView(int position, View convertView, ViewGroup parent) {  
    89.             View view = convertView;  
    90.           //根据标签类型加载不通的布局模板   
    91.             if(listTag.contains(getItem(position))){  
    92.                 //如果是标签项  
    93.                 view = LayoutInflater.from(getContext()).inflate(R.layout.group_list_item_tag, null);  
    94.             }else{  
    95.                 //否则就是数据项  
    96.                 view = LayoutInflater.from(getContext()).inflate(R.layout.group_list_item, null);  
    97.             }  
    98.           //显示名称  
    99.             TextView textView = (TextView) view.findViewById(R.id.group_list_item_text);  
    100.             textView.setText(getItem(position));  
    101.           //返回重写的view  
    102.             return view;  
    103.         }  
    104.           
    105.     }  
    106. }  

    2、程序主界面布局文件main.xml

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7.     <ListView  
    8.         android:id="@+id/list"  
    9.         android:layout_width="fill_parent"  
    10.         android:layout_height="wrap_content">  
    11.     </ListView>  
    12. </LinearLayout>  

    3、ListView中数据部分样式布局文件group_list_item.xml

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="horizontal"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="wrap_content"  
    6.     android:padding="5dip">  
    7.     <ImageView   
    8.        android:src="@drawable/icon"  
    9.        android:layout_width="50px"  
    10.        android:layout_height="50px">  
    11.     </ImageView>  
    12.     <TextView  
    13.        android:id="@+id/group_list_item_text"   
    14.        android:layout_width="wrap_content"   
    15.        android:layout_height="fill_parent"  
    16.        android:paddingLeft="5dip"  
    17.        android:gravity="center_vertical">  
    18.     </TextView>  
    19. </LinearLayout>  

    4、ListView中分组标志行的样式布局文件group_list_item_tag.xml

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="fill_parent"  
    4.     android:layout_height="wrap_content"  
    5.     android:background="#555555"  
    6.     android:paddingLeft="10dip">  
    7.     <TextView  
    8.        android:id="@+id/group_list_item_text"   
    9.        android:layout_width="wrap_content"   
    10.        android:layout_height="20dip"  
    11.        android:textColor="#ffffff"  
    12.        android:gravity="center_vertical">  
    13.     </TextView>  
    14. </LinearLayout>  
  • 相关阅读:
    SoundTouch
    80211
    netsh wlan
    jest--cmd
    必须精通nuxt了,不可变,to thi
    bili实际的ssr
    vscode 调试vuetify
    【Java】 第四章 异常处理 Notes learn Ma
    Windows 下的符号链接 小示例
    Java 第一二章 配置基础 与 java 数据类型
  • 原文地址:https://www.cnblogs.com/top5/p/2484916.html
Copyright © 2020-2023  润新知