一个界面中两个lineedit, 设置焦点,数字输入
- 格式:doc
- 大小:244.00 KB
- 文档页数:3
Android:EditText设置属性和设置输⼊规则1.EditText输⼊限制规则在xml:EditText 设置属性android:digits="ABCDE123&*"ABCDE123&*是你的限制规则例如:android:digits="0123456789abc"规则是只能输⼊英⽂字母(⼩写)abc和数字2.EditTex输⼊的⽂字为密码形式(1)在xml中设置android:password="true" //以"."形式显⽰⽂本(2)在代码⾥设置通过设置EditTex的setTransformationMethod()⽅法来实现隐藏密码和显⽰密码editText.setTransformationMethod(PasswordTransformationMethod.getInstance());//设置密码不可见3.EditTex输⼊的⽂字为电话号码android:phoneNumber="true"//输⼊电话号码4.EditTex字数限制(1)在xml中设置android:maxLength="50"(2)在代码中设置editText.setFilters(new InputFilter[]{newInputFilter.LengthFilter(100)});5.EditTex是否可编辑android:editable="true"//可编辑,false不可编辑6.在EditText中软键盘的调起、关闭(1)EditTex有焦点(focusable为true)阻⽌输⼊法弹出editText.setOnTouchListener(new OnTouchListener(){public boolean onTouch(View view,MotionEvent event){editText.setInputType(Input.TYPE_NULL);//关闭软键盘return false;}});(2)EditText⽆焦点(focusable=false)时阻挡输⼊法弹出InputMethodManager imm=(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(editText.getWindowToken(),0);(3)调⽤数字键盘并设置输⼊类型和键盘为英⽂editText.setInputType(InputType.TYPE_CLASS_NUMBER);//调⽤数字键盘editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);//英⽂(4)键盘永远不会弹出android:focusable="false"// 键盘永不弹出7.软键盘的调起导致原来的界⾯被挤上去,或者导致界⾯下⾯的tab导航被挤上去,解决⽅法如下使⽤Mainfest中的Activity的android:windowSfotInputMdoe的“adjustPan"属性另外注意:有关软键盘的问题可参考android:windowSoftInputMode中的属性,下⾯可防⽌toolbar与EditText共⽤出现的toolBar拉伸现象。
AndroidStudioEditText(输⼊框)1.设置默认提⽰⽂本如下图相⽐另外这种,下⾯这种⼜如何?默认提⽰⽂本的两个控制属性:默认提⽰⽂本的两个属性如下:android:hint="默认提⽰⽂本"android:textColorHint="#95A1AA"前者设置提⽰的⽂本内容,后者设置提⽰⽂本的颜⾊!2.获得焦点后全选组件内所有⽂本内容当我们想在点击输⼊框获得焦点后,不是将光标移动到⽂本的开始或者结尾;⽽是获取到输⼊框中所有的⽂本内容的话!这个时候我们可以使⽤selectAllOnFocus属性android:selectAllOnFocus="true"⽐如下⾯的效果图: 第⼀个是设置了该属性的,第⼆个是没设置该属性的,设置为true的EditText获得焦点后选中的是所有⽂本!3.限制EditText输⼊类型有时我们可能需要对输⼊的数据进⾏限制,⽐如输⼊电话号码的时候,你输⼊了⼀串字母,这显然是不符合我们预期的,⽽限制输⼊类型可以通过inputType属性来实现!⽐如限制只能为电话号码,密码(textPassword):<EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:inputType="phone" />可选参数如下:⽂本类型,多为⼤写、⼩写和数字符号android:inputType="none"android:inputType="text"android:inputType="textCapCharacters"android:inputType="textCapWords"android:inputType="textCapSentences"android:inputType="textAutoCorrect"android:inputType="textAutoComplete"android:inputType="textMultiLine"android:inputType="textImeMultiLine"android:inputType="textNoSuggestions"android:inputType="textUri"android:inputType="textEmailAddress"android:inputType="textEmailSubject"android:inputType="textShortMessage"android:inputType="textLongMessage"android:inputType="textPersonName"android:inputType="textPostalAddress"android:inputType="textPassword"android:inputType="textVisiblePassword"android:inputType="textWebEditText"android:inputType="textFilter"android:inputType="textPhonetic"数值类型android:inputType="number"android:inputType="numberSigned"android:inputType="numberDecimal"android:inputType="phone"//拨号键盘android:inputType="datetime"android:inputType="date"//⽇期键盘android:inputType="time"//时间键盘4.设置最⼩⾏,最多⾏,单⾏,多⾏,⾃动换⾏EditText默认是多⾏显⽰的,并且能够⾃动换⾏,即当⼀⾏显⽰不完的时候,他会⾃动换到第⼆⾏我们可以对其进⾏限制,⽐如设置最⼩⾏的⾏数:android:minLines="3"或者设置EditText最⼤的⾏数:android:maxLines="3"PS:当输⼊内容超过maxline,⽂字会⾃动向上滚动!!另外很多时候我们可能要限制EditText只允许单⾏输⼊,⽽且不会滚动,⽐如上⾯的登陆界⾯的例⼦,我们只需要设置android:singleLine="true"即可实现单⾏输⼊不换⾏5.设置⽂字间隔,设置英⽂字母⼤写类型我们可以通过下述两个属性来设置字的间距:android:textScaleX="1.5" //设置字与字的⽔平间隔android:textScaleY="1.5" //设置字与字的垂直间隔另外EditText还为我们提供了设置英⽂字母⼤写类型的属性:android:capitalize 默认none,提供了三个可选值:sentences:仅第⼀个字母⼤写words:每⼀个单词⾸字母⼤⼩,⽤空格区分单词characters:每⼀个英⽂字母都⼤写6.控制EditText四周的间隔距离与内部⽂字与边框间的距离我们使⽤margin相关属性增加组件相对其他控件的距离,⽐如android:marginTop = "5dp" 使⽤padding增加组件内⽂字和组件边框的距离,⽐如android:paddingTop = "5dp"7.设置EditText获得焦点,同时弹出⼩键盘关于这个EditText获得焦点,弹出⼩键盘的问题,前不久的项⽬中纠结了笔者⼀段时间需求是:进⼊Activity后,让EditText获得焦点,同时弹出⼩键盘供⽤户输⼊!试了很多⽹上的⽅法都不可以,不知道是不是因为笔者⽤的5.1的系统的问题!下⾯⼩结下:⾸先是让EditText获得焦点与清除焦点的edit.requestFocus(); //请求获取焦点edit.clearFocus(); //清除焦点获得焦点后,弹出⼩键盘,笔者⼤部分时间就花在这个上:低版本的系统直接requestFocus就会⾃动弹出⼩键盘了稍微⾼⼀点的版本则需要我们⼿动地去弹键盘:第⼀种:InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);第⼆种:InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view,InputMethodManager.SHOW_FORCED); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘不知道是什么原因,上⾯这两种⽅法并没有弹出⼩键盘,笔者最后使⽤了:windowSoftInputMode属性解决了弹出⼩键盘的问题,这⾥跟⼤家分享下:android:windowSoftInputMode Activity主窗⼝与软键盘的交互模式,可以⽤来避免输⼊法⾯板遮挡问题,Android1.5后的⼀个新特性。
android同时控制EditText输⼊字符个数和禁⽌特殊字符输⼊的⽅法本⽂实例讲述了android同时控制EditText输⼊字符个数和禁⽌特殊字符输⼊的⽅法。
分享给⼤家供⼤家参考。
具体分析如下:这⾥总结了三种⽅法如下:⽅法⼀:1. 引⽤两个命名空间:import android.text.TextWatcher;import android.text.Editable;⽤于禁⽌特殊字符输⼊控制定义EditText mEditText对象2. 控制字符长度:通过InputFilter过滤来实现字符长度控制,这样的好处是可以实现动态长度控制,⽽不是⼀个长度定值int mMaxLenth = 20;InputFilter[] FilterArray = new InputFilter[1];FilterArray[0] = new InputFilter() {@Overridepublic CharSequence filter (CharSequence source, int start, int end,Spanned dest, int dstart, int dend){boolean bInvlid = false;int sourceLen = getCharacterNum(source.toString());int destLen = getCharacterNum(dest.toString());if (sourceLen + destLen > mMaxLenth) {return ""; }return source;}};mEditText.setFilters(FilterArray);3. 禁⽌特殊字符输⼊:mEditText.addTextChangedListener(new TextWatcher() {String tmp = "";String digits = "/\\:*?<>|\"\n\t";@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {mEditText.setSelection(s.length());}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {tmp = s.toString();}@Overridepublic void afterTextChanged(Editable s) {String str = s.toString();if (str.equals(tmp)) {return;}StringBuffer sb = new StringBuffer();for (int i = 0; i < str.length(); i++) {if (digits.indexOf(str.charAt(i)) < 0) {sb.append(str.charAt(i));}}tmp = sb.toString();mEditText.setText(tmp);}});⽅法⼆:1. 添加引⽤:import java.util.regex.*;2. 定义函数:public static String StringFilter(String str)throws PatternSyntaxException{String regEx = "[/\\:*?<>|\"\n\t]"; //要过滤掉的字符Pattern p = pile(regEx);Matcher m = p.matcher(str);return m.replaceAll("").trim();}3. 添加监听事件:mEditText.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {String t = mEditText.getText().toString();String editable = mEditText.getText().toString();String str = stringFilter(editable.toString());if(!editable.equals(str)){mEditText.setText(str);mEditText.setSelection(str.length()); //光标置后}}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void afterTextChanged(Editable s) {}});⽅法三:int mMaxLenth = 200;//设置允许输⼊的字符长度public static String stringFilter(String str)throws PatternSyntaxException{String regEx = "[/\\:*?<>|\"\n\t]";Pattern p = pile(regEx);Matcher m = p.matcher(str);return m.replaceAll("");}mEditText.addTextChangedListener(new TextWatcher() {private int cou = 0;int selectionEnd = 0;@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {cou = before + count;String editable = mEditText.getText().toString();String str = stringFilter(editable); //过滤特殊字符if (!editable.equals(str)) {mEditText.setText(str);}mEditText.setSelection(mEditText.length());cou = mEditText.length();}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void afterTextChanged(Editable s) {if (cou > mMaxLenth) {selectionEnd = mEditText.getSelectionEnd();s.delete(mMaxLenth, selectionEnd);}}});以上代码都经过测试,给⼤家共享!对于第⼀,⼆,两种⽅法在三星NOTE 2中会有个问题(其他⼿机没有问题),并且输⼊窗⼝会出现跳动;具体原因,感兴趣的朋友可以调试⼀下!第三种⽅法没有问题。
android edittext 用法【Android EditText 用法】从基础到高级,一步一步讲解引言:在Android的开发中,EditText是一个非常常用的控件,它允许用户通过键盘输入文本。
本文将详细介绍EditText的使用方法,包括基础的使用、属性设置、事件监听以及一些实际场景中的应用。
第一部分:基础的EditText使用1. 在布局文件中添加EditText首先,在xml布局文件中添加EditText控件,可以使用以下代码:<EditTextandroid:id="@+id/editText"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入文本"android:inputType="text"/>这段代码创建了一个EditText控件,设置了其宽度为match_parent,高度为wrap_content。
同时,我们使用了hint属性,当EditText没有内容时,会显示一个提示文本,方便用户输入。
2. 获取EditText的值为了获取EditText中输入的值,我们需要在Java代码中找到EditText控件,并使用getText()方法。
以下是一个示例代码:EditText editText = findViewById(R.id.editText);String text = editText.getText().toString();这段代码首先通过findViewById找到了id为editText的EditText控件,然后使用getText()方法获取到EditText中的内容,并通过toString()方法来将其转换为字符串。
Android中Edittext设置输⼊条件⼀、应⽤场景之前做商城应⽤时,会有对⽤户资料的设置情况进⾏限制,如下:(1)⽤户邮箱,应当只允许输⼊英⽂字母,数字和@.两个符号,(2)⽤户⼿机,应当只能输⼊数字,禁⽌输⼊其他字符。
(3)⽤户密码,应当不能输⼊空格以及中⽂字符等。
⼆、解决⽅案针对⽤户邮箱以及⽤户⼿机,有以下两种解决⽅案:(1)EditText中的android:digits属性:它表⽰EditText能够接受的字符集合。
通过配置此属性,就可以实现只允许输⼊指定的字符。
这⾥列举上述三种场景下的android:digits配置。
场景⼀:只允许输⼊数字android:digits="0123456789"场景⼆:只允许输⼊数字和英⽂字母android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"场景三:只允许输⼊数字,英⽂字母和@.两个符号android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@."使⽤android:digits属性有⼏个需要注意的地⽅:android:digits属性是隐藏的,⽆法直接在EditText的可视化属性列表中找到。
只能直接在XML布局⽂件中配置。
当在XML中增加了这项配置后,才可以在EditText的可视化属性列表中找到。
android:digits属性中的字符顺序没有影响,例如只允许输⼊数字时,可以⽤android:digits="0123456789",也可以⽤android:digits="9876543210"。
android:digits属性中允许有重复字符,有重复字符在使⽤效果上没有影响。
QTQLineEdit获取焦点获取焦点后全选字符为了实现 QLineEdit 获取焦点/获取焦点后全选字符的功能,在⽹上先查了 QLineEdit 获取焦点的⽅法,有两种:1 此⽅法只有在窗体从失去焦点到获取焦点时有作⽤:即窗体失去焦点后再次获取焦点时,将焦点置于某个 QLineEdit 中。
此功能明显不是偶想要的但由于⽹上现有的⽂章都是⼀样的,说的不是很清楚,所以只有试了才知道。
有三段代码:1) 在窗体初始化时增加如下代码:1// QLineEdit 获取焦点 1 - 此⽅法错误: 只有在窗体从失去焦点到获取焦点时有作⽤2 ui->ledSendStr->installEventFilter(this);3 ui->ledSendFile->installEventFilter(this);4 ui->ledSendPreTime->installEventFilter(this);2) 在窗体的 .h ⽂件中声明 SLOT,如下:1public slots:2bool eventFilter(QObject *,QEvent *); // QLineEdit 获取焦点 23) 实现的代码1// QLineEdit 获取焦点 32bool MainWindow::eventFilter(QObject *watched, QEvent *event)3 {4if(watched == ledSendStr)5 {6if(QEvent::FocusIn == event->type())7 {8 qDebug() << "focus in";9 ledSendStr->selectAll(); // 不起使⽤,只有在窗体获取到焦点时才有功能10 ledSendStr->setFocus(Qt::OtherFocusReason);11 }12else if(QEvent::FocusOut == event->type())13 {14 qDebug() << "focus out";15 }16 }17else if(watched == ledSendFile)18 {19 }20else if(watched == ledSendPreTime)21 {22 }23return QWidget::eventFilter(watched,event); // 最后将事件交给上层对话框24 }2 继承 QLineEdit, 再实现如下两个 SIGNAL: virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e);1) 继承类的声明:1 #ifndef MYLINEEDIT_H2#define MYLINEEDIT_H34 #include <QLineEdit>5 #include <QDebug>67class MyLineEdit: public QLineEdit8 {9 Q_OBJECT1011public:12 MyLineEdit(QWidget *parent=0);13 ~MyLineEdit();1415protected:16virtual void focusInEvent(QFocusEvent *e);17virtual void focusOutEvent(QFocusEvent *e);18 };1920#endif// MYLINEEDIT_H2) 继承类的实现:1 #include "myLineEdit.h"23 MyLineEdit::MyLineEdit(QWidget *parent):QLineEdit(parent)4 {5 }67 MyLineEdit::~MyLineEdit()8 {9 }1011void MyLineEdit::focusInEvent(QFocusEvent *e)12 {13// qDebug() << "*MyLineEdit::focusInEvent" << this->objectName();1415 QPalette pGreen = QPalette();16 pGreen.setColor(QPalette::Base,Qt::gray); //QPalette::Base 对可编辑输⼊框有效,还有其他类型,具体的查看⽂档17 setPalette(pGreen);1819 ledSendStr->selectAll(); // 不起使⽤,只有在窗体获取到焦点时才有功能20 ledSendStr->setFocus(Qt::OtherFocusReason);21 }2223void MyLineEdit::focusOutEvent(QFocusEvent *e)24 {25// qDebug() << "*MyLineEdit::focusOutEvent" << this->objectName();2627 QPalette pWhite = QPalette();28 pWhite.setColor(QPalette::Base,Qt::white);29 setPalette(pWhite);30 }3) 使⽤ MyLineEdit 类定义控件,并完成布局。
命令按钮获得焦点的方法1. 使用tab键进行焦点切换:在页面上有多个命令按钮时,可以使用tab键在按钮之间进行焦点切换,按下tab键时,焦点会从一个按钮移动到下一个按钮。
可以使用shift+tab键进行逆向切换。
2. 使用鼠标点击:通过鼠标点击按钮来获得焦点,当鼠标指针悬停在按钮上时,按钮会高亮显示,单击按钮即可获得焦点。
3. 使用键盘快捷键:某些按钮可能有与之关联的键盘快捷键。
通过按下对应的键盘快捷键,可以直接将焦点设置在按钮上。
4. 使用JavaScript编程:开发人员可以使用JavaScript编程,通过代码设置命令按钮获得焦点的逻辑,例如使用`document.getElementById()`方法获取按钮元素,并调用`element.focus()`方法来设置焦点。
5. 使用关键字:在一些应用程序中,可以通过输入特定的关键字来获得焦点,例如在搜索框中输入关键字,就可以将焦点设置在搜索按钮上。
6. 设置tabindex属性:HTML中的tabindex属性定义了元素在焦点顺序中的位置。
通过设置命令按钮的tabindex属性值,可以控制按钮在焦点切换中的顺序,并获得焦点。
7. 设置autofocus属性:HTML5中的autofocus属性可以直接在页面加载时将焦点设置在指定的按钮上。
只需要在按钮元素上添加autofocus属性即可。
8. 使用CSS伪类选择器:可以通过CSS伪类选择器为命令按钮添加样式,例如使用`:focus`伪类选择器,在按钮获得焦点时应用特定的样式。
9. 使用ARIA属性:ARIA是一组为Web内容和应用程序增加可访问性的属性和角色。
可以使用ARIA属性为命令按钮指定焦点状态,例如使用`aria-haspopup`属性表示按钮有一个下拉菜单。
10. 使用HTML表单:将命令按钮放置在HTML表单中,可以通过提交表单的方式来获得焦点,例如通过按下enter键。
11. 使用焦点事件:通过为命令按钮添加焦点事件的监听器,可以在按钮获得焦点时执行特定的操作。
ledit使用技巧LEdit是一个文本编辑器,是DOS环境下的一个很好用的编辑器工具。
下面介绍一些LEdit使用技巧。
1. 打开文件:在DOS命令行中输入LEdit命令,后跟要打开的文件名。
如果文件不存在,LEdit将会创建一个新文件。
2. 保存文件:在编辑文件时,可以使用Ctrl + S快捷键保存文件。
也可以使用F5功能键选择"Save"选项保存文件。
3. 剪切、复制和粘贴:使用Ctrl + X剪切文本,Ctrl + C复制文本,Ctrl + V粘贴文本。
也可以使用F2剪切,F3复制,F4粘贴。
4. 撤销和重做:使用Ctrl + Z撤销操作,Ctrl + Y重做操作。
也可以使用F8撤销,F9重做。
5. 查找和替换:使用Ctrl + F打开查找对话框,输入要查找的文本,并选择查找的方向(往上或往下)。
使用Ctrl + R打开替换对话框,输入要查找的文本和要替换的文本,点击替换按钮进行替换。
6. 跳转到指定行:使用Ctrl + G打开Go To对话框,输入要跳转的行号,并按下回车键即可跳转到指定行。
7. 快速屏幕切换:使用Alt + S快捷键可以在编辑器窗口和命令行窗口之间快速切换。
8. 自动换行:使用Alt + W快捷键可以开启或关闭自动换行功能。
9. 修改字体和颜色:使用Alt + O快捷键打开Options菜单,可以修改字体和颜色等显示设置。
10. 执行DOS命令:使用Alt + X快捷键打开Execute菜单,可以执行DOS命令。
11. 分屏查看:使用Ctrl + U可以开启或关闭分屏查看功能。
12. 批量文件处理:使用Ctrl + B可以对多个文件进行批量处理。
例如,可以对多个文件进行替换操作。
13. 宏录制和回放:使用Ctrl + H打开Macros菜单,可以录制和回放宏操作。
14. 快速搜索文件:使用Ctrl + F2打开Quick Find对话框,输入要搜索的文件名,并选择搜索的目录。
◇一、EditText有一些属性可以设置EditText的特性,比如最大长度,空白提示文字等。
1.有时候我们有一些特属的需要,要求只能在EditText中输入特定个数的字符,比如身份证号、手机号吗等。
这时候就可以通过android:maxLength属性来设置最大输入字符个数,比如android:maxLength=“4”就表示最多能输入4个字符,再多了就输入不进去了。
2.空白提示文字。
有时候我们需要说明你定义的这个EditText是做什么用的,比如让输入“用户名”,或者输入“电话号码”等,但是你又不想在EditText前面加一个TextView来说明这是输入“用户名”的,因为这会使用一个TextView,那么怎么办呢?EditText为我们提供了android:hint来设置当EditText内容为空时显示的文本,这个文本只在EditText为空时显示,你输入字符的时候就消失了,不影响你的EditText的文本。
修改main.xml如下:Xml代码运行应用就会看到如下的效果:看看吧,简洁明了还不用新增一个TextView说明,也不影响用户操作。
上面列出了空白时的提示文字,有的人说了,我不想要这个灰色的提示文字,Xml代码运行程序效果如下:看到了吧,颜色已经变了。
4.还有一个比较实用的功能,就是设置EditText的不可编辑。
设置android:enabled="false"可以实现不可编辑,可以获得焦点。
这时候我们看到EditText和一个TextView差不多:实现类似html中Textarea的文本域。
在Android中没有专门的文本域组件,Xml代码运行程序效果如下:在我们开发程序的时候不免会输入一些特属个数的字符,比如密码(输入框的字符要加密显示),电话号码(比如数字和-),数字等,这些都算是一些特属格式的字符,强大的EditText同样为我们提供了输入这些特属格式字符的设置。
expandablelistview 焦点edittext如何在ExpandableListView中为EditText设置焦点。
ExpandableListView是Android中一种常见的列表控件,它能够以树状结构展示数据。
而EditText是一种常用的输入框控件,用于接收用户的输入。
在某些场景下,我们希望在ExpandableListView的子项中嵌入EditText,并为其设置焦点,以方便用户的输入。
本文将一步一步地说明如何实现这一功能。
第一步:准备工作在开始为ExpandableListView的子项中嵌入EditText之前,我们需要对ExpandableListView进行一些基本的设置。
首先,在布局文件中添加ExpandableListView控件:<ExpandableListViewandroid:id="+id/expandableListView"android:layout_width="match_parent"android:layout_height="match_parent" />接下来,我们需要准备一些数据,以便展示在ExpandableListView中。
我们可以使用一个二维数组来表示ExpandableListView的数据。
例如:String[][] childData = {{"Child 1", "Child 2", "Child 3"}, {"Child 4", "Child 5", "Child 6"}};String[] groupData = {"Group 1", "Group 2"};这里,我们使用一个二维数组childData表示ExpandableListView的子项数据,每个一维数组表示一组子项的数据;而groupData表示ExpandableListView的组数据。