当前位置: 编程技术>移动开发
本页文章导读:
▪spinner控件 札记 spinner控件 笔记
1、在控件配置文件中添加Spinner控件标签2、得到ArrayAdapter对象3、将得到的Spinner对象和ArrayAdapter对象联系起来
第一种设置ArrayAdapter方式:
List<String> list = new ArrayList<Str.........
▪ AutoCompleteTextView的根本使用 AutoCompleteTextView的基本使用
当输入部分内容之后会有相关的建议,类似于百度提示信息1、在布局文件中声明一个AutoCompleteTextView
<AutoCompleteTextView
android:id="@+id/autocomplete_country"
android:layout.........
▪ 项目中遇到的一个有关问题-checkbox 项目中遇到的一个问题-checkbox
模拟下在项目中出现的问题
<1>选中3个
<2>往下滑动
<3>网上滑动后,刚才勾选的消失了
当时项目的解决方法
设一个MAP用于存方 是否.........
[1]spinner控件 札记
来源: 互联网 发布时间: 2014-02-18
spinner控件 笔记
1、在控件配置文件中添加Spinner控件标签
2、得到ArrayAdapter对象
3、将得到的Spinner对象和ArrayAdapter对象联系起来
第一种设置ArrayAdapter方式:
List<String> list = new ArrayList<String>(); list.add("已婚"); list.add("未婚"); /* * 第一个参数:上下文对象 * 第二个参数:指定了下拉选项的样式 * 第三个参数:是第二个参数TextView控件的ID值 * 第四个参数:List对象的值 */ ArrayAdapter adapter = new ArrayAdapter(this, R.layout.item, R.id.spinnerText, list); spinner = (Spinner)findViewById(R.id.marray); spinner.setAdapter(adapter);
第二中设置ArrayAdapter方式:
这种方式需要在values目录下建立一个新的文件夹
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="marryArray"> <item>已婚</item> <item>未婚</item> </string-array> </resources> 或者是直接在string.xml文件中添加上面的代码(不需要resources标签) /* * 通过createFromResource方法创建一个ArrayAdapter * 第一个参数:上下文对象 * 第二个参数:引用了在spinner.xml文件当中定义的String数组 * 第三个参数:用来指定Spinner样式,是一个布局文件的ID,该布局文件有Android系统提供,当然也可以用自己写的 */ ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.marryArray, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter);
选中Spinner控件的选项会触发AdapterView.OnItemSelectedListener事件
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Toast.makeText(getApplicationContext(), "ss", Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { } });
[2] AutoCompleteTextView的根本使用
来源: 互联网 发布时间: 2014-02-18
AutoCompleteTextView的基本使用
当输入部分内容之后会有相关的建议,类似于百度提示信息
1、在布局文件中声明一个AutoCompleteTextView
<AutoCompleteTextView android:id="@+id/autocomplete_country" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" />
2、定义一个提示条目的样式,在layout目录下建立list_item.xml文件
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="16sp" android:textColor="#000"> </TextView>
3、它需要使用ArrayAdapter来提供数据
public void setAutoCompleteTextView(){ autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autocomplete_country); //COUNTRIES是一个数组,AutoCompleteTextView会将数组内容和用户输入的匹配,然后再显示出来提示用户 //R.layout.list_item显示的是提示信息显示的内容的样式 ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES); autoCompleteTextView.setAdapter(arrayAdapter); }
备注:COUNTRIES是一个数组类型
4、将AutoCompleteTextView和ArrayAdapter联系起来
[3] 项目中遇到的一个有关问题-checkbox
来源: 互联网 发布时间: 2014-02-18
项目中遇到的一个问题-checkbox
模拟下在项目中出现的问题
<1>选中3个
<2>往下滑动
<3>网上滑动后,刚才勾选的消失了
当时项目的解决方法
设一个MAP用于存方 是否勾选的boolean值。
checkbox是图片做得
在设配器里增加一个全局的map
public Map<Integer, Boolean> isSelected=new HashMap<Integer, Boolean>(); 捕获事件处理,屏蔽了checkbox的事件:lv.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { cb=(CheckBox) view.findViewById(R.id.cb); //切换图片状态,选中或者没选中 cb.toggle(); //将状态存到map里保存 adapter.isSelected.put(position, cb.isChecked()); }}); 在适配器的处理的方式 :if(isSelected!=null&&isSelected.get(position)!=null){ holder.cb.setChecked(isSelected.get(position)); }
改后效果
<1>
<2>下拉后,会发现第二页有3项莫名的被选了
<3>拉回去,0,1,2依旧被勾选了的
问题解决了,但是出现了个新的问题,当你勾选了1,2,3,当你向后滚动发现另一个view也莫名奇妙的勾选了
解决方式:
第一种方式
public View getView(final int position, View convertView, ViewGroup parent) { // 去掉下面那句,但是以后就每次会生成新的convertView //if(convertView==null) convertView=inflater.inflate(R.layout.a,null);
第二种方式
boolean flag=false; holder.cb.setChecked(flag); if(isSelected!=null&&isSelected.get(position)!=null){ holder.cb.setChecked(isSelected.get(position)); }
最新技术文章: