Android32_ExpandableListView、AutoCompleteTextView、ToggleButton
2016-01-20 10:18
549 查看
ExpandableListView、AutoCompleteTextView、ToggleButton
一、ExpandableListView:
(一)、类结构:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AdapterView<T extends android.widget.Adapter>
↳ android.widget.AbsListView
↳ android.widget.ListView
↳ android.widget.ExpandableListView
(二)、BaseExpandableListAdapter适配器的类结构:
java.lang.Object
↳ android.widget.BaseExpandableListAdapter
【备注:】ExpandableListView还可以使用SimpleExpandableListAdapter适配器加载。
java.lang.Object
↳ android.widget.BaseExpandableListAdapter
↳ android.widget.SimpleExpandableListAdapter
(三)、UI核心代码:
1、xml布局文件及解释:
<ExpandableListView android:id="@+id/list_main" android:layout_width="fill_parent" android:layout_height="fill_parent" android:listSelector="#00000000" > </ExpandableListView>
<!-- android:cacheColorHint="#00000000" 此属性用来设置:拖动列表的时候防止出现黑色背景 -->
<!-- android:drawSelectOnTop="false" 此属性用来设置listview上的背景颜色会不会 挡住(覆盖)内容 , 如果这是为false就表示不会覆盖掉 -->
(四)、java核心代码:
public class MainActivity extends Activity { private ExpandableListView expandableListView; // 设置组视图的图片 int[] groupImg = new int[] { R.drawable.wei, R.drawable.shu, R.drawable.wu }; // 设置组视图的显示文字 private String[] groupData = new String[] { "魏", "蜀", "吴" }; // 设置子视图图片 public int[][] childImg = new int[][] { { R.drawable.qq, R.drawable.qq, R.drawable.qq, R.drawable.qq, R.drawable.qq, R.drawable.qq }, { R.drawable.qq, R.drawable.qq, R.drawable.qq, R.drawable.qq, R.drawable.qq, R.drawable.qq }, { R.drawable.qq, R.drawable.qq, R.drawable.qq, R.drawable.qq, R.drawable.qq } }; // 设置子视图显示文字 private String[][] childData = new String[][] { { "夏侯惇", "许褚", "郭嘉", "司马懿", "杨修" }, { "马超", "张飞", "刘备", "诸葛亮", "赵云" }, { "吕蒙", "陆逊", "孙权", "周瑜", "孙尚香" } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 以下是一个取消title的样式设置 // requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); expandableListView = (ExpandableListView) findViewById(R.id.list_main); // 给expandableListView设置适配器 expandableListView.setAdapter(new MyAdapter(MainActivity.this)); // 设置item点击的监听器 expandableListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // 通过groupPosition和childPosition就能获取到子列表的文字内容 Toast.makeText(MainActivity.this, "你点击了:" + childData[groupPosition][childPosition], Toast.LENGTH_SHORT).show(); return false; } }); } // 以下是自定义了一个可扩展ListView的适配器。BaseExpandableListAdapter是一个直接继承于object的对象。 class MyAdapter extends BaseExpandableListAdapter { private Context context; // 构造方法,目的是让context对象传进类中,方便调用 public MyAdapter(Context context) { this.context = context; } @Override // 获取组的个数 public int getGroupCount() { return groupData.length; } @Override // 获取组中每个item的内容 public Object getGroup(int groupPosition) { return groupData[groupPosition]; } @Override // 获取组中每个item的id public long getGroupId(int groupPosition) { return groupPosition; } @Override // 获取每组中每个子item的个数 public int getChildrenCount(int groupPosition) { return childData[groupPosition].length; } @Override // 获取子item的内容 public Object getChild(int groupPosition, int childPosition) { return childData[groupPosition][childPosition]; } @Override // 获取子item的id public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return true; } @Override // 获取组视图。就是生成组中每个item视图 // 通过这个例子希望大家学会在java中定义布局和控件。并且在java文件中去定义布局和控件的属性。 public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { // 构造一个线性布局 LinearLayout layout = new LinearLayout(context); // 让线性布局的方向为水平方向。其实默认情况下就是水平方向。这里是希望同学们学会这个设置方向的方法 layout.setOrientation(0); // layout.setBackgroundResource(R.drawable.ic_launcher); // 构造一个ImageView控件 ImageView logo = new ImageView(context); // 给这个图片控件设置内容 logo.setImageResource(groupImg[groupPosition]); // 设置图片的内填充。setPadding(50, 0, 0, 0)四个参数的方向分别为左、上、右、下。 logo.setPadding(50, 0, 0, 0); // 将控件加入到布局中 layout.addView(logo); // 构造一个文本控件 TextView textView = new TextView(context); // 设置文本的颜色 textView.setTextColor(Color.BLUE); // 设置内填充边距 textView.setPadding(36, 0, 0, 0); // 设置文字大小 textView.setTextSize(20); // 给文本控件设置内容。就要从给定的数据源中获取数据 textView.setText(getGroup(groupPosition).toString()); // 将文本控件加入到布局中 layout.addView(textView); return layout; } @Override // 获取子视图。就是生成组中每个子item视图。该方法中的注释同上 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { LinearLayout layout = new LinearLayout(context); layout.setOrientation(0); ImageView headpicView = new ImageView(context); headpicView .setImageResource(childImg[groupPosition][childPosition]); // 设置图片的内填充。setPadding(100, 0, 0, 0)四个参数的方向分别为左、上、右、下。 headpicView.setPadding(100, 0, 0, 0); layout.addView(headpicView); TextView textView = new TextView(context); textView.setPadding(30, 0, 10, 10); textView.setTextSize(16); textView.setText(getChild(groupPosition, childPosition).toString()); layout.addView(textView); return layout; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } }; }
二、AutoCompleteTextView:自动完成文本框
(一)、介绍:
自动完成文本框,用于实现用户输入一定字符后,显示一个下拉式菜单,让用户从中选择,当用户选择后,就会自动填写该文本框。
类结构:
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.EditText
↳ android.widget.AutoCompleteTextView
(二)、xml常用属性:
1、android:completionThreshold 用于指定用户至少输入几个字符才会显示提示
UI核心代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <AutoCompleteTextView android:id="@+id/autoCompleteTextView_main" android:layout_width="match_parent" android:layout_height="wrap_content" android:completionThreshold="1" android:completionHint="请输入:" android:ems="10" android:text="" > <requestFocus /> </AutoCompleteTextView> </LinearLayout>
(三)、java核心代码:
public class MainActivity extends Activity { private AutoCompleteTextView autoCompleteTextView_main; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); autoCompleteTextView_main = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView_main); String[] arrStr = new String[] { "about", "adapter", "apple", "android", "angle", "angel" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>( MainActivity.this, android.R.layout.simple_dropdown_item_1line, arrStr); autoCompleteTextView_main.setAdapter(adapter); } }
三、ToggleButton:开关按钮
(一)、类结构:
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
↳ android.widget.CompoundButton
↳ android.widget.ToggleButton
(二)、UI核心代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ToggleButton android:id="@+id/toggleButton_main_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="开" android:textOff="关"/> <ToggleButton android:id="@+id/toggleButton_main_two" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="开" android:textOff="关"/> </LinearLayout>
(三)、java核心代码:
public class MainActivity extends Activity { private ToggleButton toggleButton_main_one; private ToggleButton toggleButton_main_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toggleButton_main_one = (ToggleButton) findViewById(R.id.toggleButton_main_one); toggleButton_main_two = (ToggleButton) findViewById(R.id.toggleButton_main_two); OnCheckedChangeListener listener = new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub String result1 = toggleButton_main_one.isChecked() ? "开" : "关"; String result2 = toggleButton_main_two.isChecked() ? "开" : "关"; setTitle(result1 + ":" + result2); } }; toggleButton_main_one.setOnCheckedChangeListener(listener); toggleButton_main_two.setOnCheckedChangeListener(listener); } }
相关文章推荐
- android数据存储
- 【Android Studio快捷键】之代码提示
- Android31_BroadcastReceiver及Notification
- Android30_TAB书签导航条制作
- Android29_ViewPager
- Android Studio如何添加工程(project)为library(针对非gradle)
- Android28_Fragment及屏幕自适应
- Android27_LruCache缓存处理及异步加载图片类的封装
- 2015年,从毕业到工作的几点感悟(Android开发新人)
- 2015年,从毕业到工作的几点感悟(Android开发新人)
- Android中Java和JavaScript交互
- 阅读《Android 从入门到精通》(14)——时间选择器
- Android26_Bitmap二次采样
- Android25_Handler、Looper消息传递机制
- android应用程序窗口框架学习(4)-从setcontentview说起
- Android 三大图片缓存原理、特性对比
- Android Studio导入第三方jar包
- Android24_ActionBar及Dialog
- Android小记: Intent.setFlags(Intent.FLAG_ACTIVIT)使用
- android 类似qq左滑露出删除按钮