android listView 自定义布局结合CheckedTextView实现多选
2013-08-09 14:42
666 查看
最终效果图如下:
![](http://img.blog.csdn.net/20130810135447468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbnRpYW5zaGFuZ2NoYQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
apiDemo中有一个listView实现多选的例子
比较简单
利用了framework中的布局 simple_list_item_multiple_choice.xml ,该布局内容就是一个CheckedTextView
在实际的应用中我们肯定会遇到复杂布局的情况,一旦使用复杂布局,发现listview原生的多选模式失效了!失效原因通过查看ListView的源码可以发现,问题出在setupChild函数中
其中的child对象就是自定义adapter的getView()函数的返回结果,由于我们没有实现Checkable接口所以无法操作。变通办法,ListView有一个察看item是否被选中的函数,结合该函数,修改自定义adapter的getView函数:
apiDemo中有一个listView实现多选的例子
比较简单
package com.example.android.apis.view; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; /** * This example shows how to use choice mode on a list. This list is * in CHOICE_MODE_MULTIPLE mode, which means the items behave like * checkboxes. */ public class List11 extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, GENRES)); final ListView listView = getListView(); listView.setItemsCanFocus(false); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); } private static final String[] GENRES = new String[] { "Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama", "Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller" }; }
利用了framework中的布局 simple_list_item_multiple_choice.xml ,该布局内容就是一个CheckedTextView
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center_vertical" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:paddingLeft="6dip" android:paddingRight="6dip" />
在实际的应用中我们肯定会遇到复杂布局的情况,一旦使用复杂布局,发现listview原生的多选模式失效了!失效原因通过查看ListView的源码可以发现,问题出在setupChild函数中
private void setupChild(View child, int position, int y, boolean flowDown,int childrenLeft, boolean selected, boolean recycled) { .................. if (mChoiceMode != CHOICE_MODE_NONE && mCheckStates != null) { if (child instanceof Checkable) { ((Checkable) child).setChecked(mCheckStates.get(position)); } } }
其中的child对象就是自定义adapter的getView()函数的返回结果,由于我们没有实现Checkable接口所以无法操作。变通办法,ListView有一个察看item是否被选中的函数,结合该函数,修改自定义adapter的getView函数:
public View getView(int position, View convertView, ViewGroup parent) { boolean check = ((ListView)parent).isItemChecked(position); viewHolder.myCheckedTextView.setChecked(check); }(o(︶︿︶)o 唉csdn编辑器真心难用啊 怎么改都不能把结尾的那些杂乱代码删掉)
相关文章推荐
- android listView 自定义布局结合CheckedTextView实现多选
- android 在listview上面的Textview实现html解析并且图片异步宽高布局重新适配
- 利用CheckedTextView在ListView中的实现多选
- Android学习-实现一个ListView中由Checkbox和TextView构成的布局
- ListView中使用CheckedTextView实现多选
- Android 自定义TextView实现文字渐变动画
- Android -- 自定义实现横竖双向滚动的列表(ListView)布局
- Android自定义TextView实现文字图片居中显示的方法
- android ExpandableTextView 的实现,可以在listview中利用
- CheckedTextView实现ListView的单选效果
- Android自定义Button结合PopupWindow和ListView实现顺序显示下拉菜单控件
- android AutoCompleteTextView中文搜索及自定义布局及固定显示条数
- Android textview和listview实现水平自动滚动的走马灯效果
- Android 自定义TextView实现文本内容自动调整字体大小
- android中动态布局(动态加入TextView和ListView)
- Android自定义控件之自定义TextView,实现drawableLeft可以和文字一起居中
- android 自定义ListView 实现 弹出自定义对话框(带EditText)实现 配置文件实现
- Android自定义ViewGroup实现流式布局
- Android 自定义布局竖向的ViewPager的实现
- android自定义viewgroup实现等分格子布局