- 浏览: 5819419 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
只是一个范例,是为了代码快速迭代而写的
使用了listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
效果图
布局:
单个Item布局:item_product_list.xml
选中的背景:bg_item.xml
用法:
Android开发技巧——自定义单选或多选的ListView
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0619/3089.html
ListView多选操作模式详解CHOICE_MODE_MULTIPLE与CHOICE_MODE_MULTIPLE_MODAL
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1105/1906.html
使用了listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
效果图
import java.util.ArrayList; import java.util.List; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; import com.mb.bgfitting.CommonAdapter; import com.mb.bgfitting.ViewHolder; import com.mb.bgfitting.app.R; import com.mb.bgfitting.model.BillSaleDetailInfo; /** * * @author pythoner * */ public class ProductListDialog<T> extends Dialog { private Context context; private ListView listView; private List<T> beans; private List<T> checkedBeans = new ArrayList<T>(); private CommonAdapter<T> adapter; public ProductListDialog(Context context, List<T> beans) { this(context, R.style.Theme_Dialog_NoTitle, beans); // TODO Auto-generated constructor stub } public ProductListDialog(Context context, int theme, List<T> beans) { super(context, theme); // TODO Auto-generated constructor stub this.context = context; this.beans = beans; init(); } private void init() { this.setCanceledOnTouchOutside(true); this.setCancelable(true); } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.dialog_product_list); initViews(); // initValues(); } private void initViews() { if (beans == null) { return; } findViewById(R.id.btn_ok).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (checkedBeans.size() == 0) { Toast.makeText(context, "请选择至少一件商品", Toast.LENGTH_LONG).show(); return; } if (onOkClickListener != null) { onOkClickListener.onOkClick(v, checkedBeans); } dismiss(); } }); listView = (ListView) findViewById(R.id.listView); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); listView.setAdapter(adapter = new CommonAdapter<T>(context, beans, R.layout.item_product_list) { @Override public void setValues(ViewHolder helper, T item, final int position) { // TODO Auto-generated method stub if (item instanceof BillSaleDetailInfo) { BillSaleDetailInfo bean = (BillSaleDetailInfo) item; helper.setText(R.id.item_0, bean.getProdName()); helper.setText(R.id.item_1, bean.getColorName()); helper.setText(R.id.item_2, bean.getSizeName()); } } }); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View v, int position, long id) { // TODO Auto-generated method stub T bean = beans.get(position); if (listView.isItemChecked(position)) { checkedBeans.add(bean); } else { if (checkedBeans.contains(bean)) { checkedBeans.remove(bean); } } } }); } private void initValues() { // 不能写在init()中 Window window = getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); DisplayMetrics dm = context.getResources().getDisplayMetrics(); lp.width = dm.widthPixels; lp.gravity = Gravity.BOTTOM; window.setAttributes(lp); } private OnOkClickListener<T> onOkClickListener; public interface OnOkClickListener<T> { public void onOkClick(View v, List<T> list); } public void setOnOkClickListener(OnOkClickListener<T> onOkClickListener) { this.onOkClickListener = onOkClickListener; } }
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/dialog_width" android:layout_height="wrap_content" android:background="@android:color/white" android:orientation="vertical" > <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:cacheColorHint="@android:color/transparent" /> <Button android:id="@+id/btn_ok" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="确定" android:textSize="@dimen/font_big" /> </LinearLayout>
单个Item布局:item_product_list.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@drawable/bg_item" > <TextView android:id="@+id/item_0" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="8dp" android:paddingBottom="8dp" android:textColor="@color/base_text_black" android:textSize="@dimen/font_middle" android:layout_weight="1" /> <TextView android:id="@+id/item_1" android:layout_width="40dp" android:layout_height="wrap_content" android:paddingTop="8dp" android:paddingBottom="8dp" android:textColor="@color/base_text_black" android:textSize="@dimen/font_middle" /> <TextView android:id="@+id/item_2" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="8dp" android:paddingBottom="8dp" android:layout_weight="1" android:textColor="@color/base_text_black" android:textSize="@dimen/font_middle" /> </LinearLayout>
选中的背景:bg_item.xml
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/base_blue" android:state_activated="true"></item> <item android:drawable="@android:color/transparent"/> </selector>
用法:
ProductListDialog<BillSaleDetailInfo> d=new ProductListDialog<BillSaleDetailInfo>(context,billSaleDetailInfos); d.setOnOkClickListener(new ProductListDialog.OnOkClickListener<BillSaleDetailInfo>() { @Override public void onOkClick(View v, List<BillSaleDetailInfo> list) { // TODO Auto-generated method stub addToShoppingCartIfNecessary(list); } }); d.show();
Android开发技巧——自定义单选或多选的ListView
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0619/3089.html
ListView多选操作模式详解CHOICE_MODE_MULTIPLE与CHOICE_MODE_MULTIPLE_MODAL
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1105/1906.html
发表评论
-
工具类之FragmentUtils
2017-04-01 11:37 1723fragment应该是广大Android开发者都用到过的一个v ... -
左中右结构的行布局
2016-12-19 21:35 1184最近项目要开发一个新版本,发现项目中许多布局大致都相同改动不大 ... -
RecyclerView:带header&footer&加载更多
2015-09-09 16:24 2966接上一篇 由简到繁,循序渐进 实现了: 0,点击&长按 ... -
RecyclerView:带header和footer的grid
2015-09-09 13:47 3044知道原理后,为RecyclerView实现同时带header和 ... -
RecyclerView:带header的grid
2015-09-09 13:01 2430RecyclerView是一个高度可定制性的View 本文将使 ... -
iconify使用文本替换icon测试
2015-08-28 17:12 1690源项目地址 https://github.com/JoanZa ... -
快速上传头像到服务端工具类FaceUtil
2015-07-12 14:22 3075快速迭代用 import java.io.DataOut ... -
HorizontalScrollView+RadioGroup+ViewPager+FragmentPagerAdapter基本结构
2015-07-12 13:56 3293快速迭代用 import java.util.Arr ... -
LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构
2015-07-12 13:07 4153一切为了快速迭代 import java.util. ... -
RadioButton+ViewPager+FragmentPagerAdapter快速搭建页面结构
2015-07-12 11:08 2561一切为了快速开发 开发类似界面 import and ... -
为ViewPager设置CirclePageIndicator(小圆点)
2015-07-03 16:54 15326一切为了快速迭代! import android.con ... -
基于上一篇写的SimplePairListPopupWindow<F,S>
2015-06-19 11:15 1534这次使用Pair<F,S>实现一个简单的Simpl ... -
基于上一篇实现的SimpleListPopupWindow<T>
2015-06-19 11:11 1517这次是个简单的PopupWindow,快速迭代用。 imp ... -
实现一个快速简单的SimpleListDialog<T>
2015-06-19 10:59 1744我写这样的文章都是为了快速迭代,所以都写的比较简单,谅解 此 ... -
为ViewPager设置SimpleViewPagerIndicator
2015-02-14 13:45 4724说到ViewPagerIndicator,网上有很多专门的开源 ... -
一个典型的从下部弹上来的Dialog
2014-12-05 14:47 6071典型的看图 import android.app ...
相关推荐
在这个例子中,`<select>`标签的`name`属性定义了表单字段的名称,`multiple`属性使得用户可以多选,`size`属性定义了下拉框显示的选项数量。每个`<option>`标签代表一个可选的值,用户可以看到并选择。 在实际应用...
在Bootstrap中实现多选下拉框可以极大提升用户体验,使得用户在有限的空间内可以选择多个选项。以下是如何使用Bootstrap来创建这样一个功能的详细步骤。 首先,确保你已经在你的项目中引入了Bootstrap的相关资源。...
<label>测试多选渲染:</label> <div> <template v-for=item> <input type=checkbox name=hobby :value=item.id :checked=loopsss.indexOf(item.id) > -1/>{{item.name}} </template> </div> <label>下拉...
对于更复杂的情况,比如需要多选,可以使用`<s:checkboxlist>`: ```jsp <s:checkboxlist name="selectedEmployees" list="allEmployees" label="选择员工" listKey="id" listValue="name" /> ``` 这将创建一组...
【可以多选图片】<br><br>2:选择完图片后,点击下方的Next<br><br>3:选择皮肤 Web Album Skin , 颜色样式Style,图片大小Photos Size, 输出文件路径Output Folder,其他设置略。<br><br>4:设置完毕后点击 Generate ...
C#源码大集合 01(共3卷)<br><br>之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷)<br><br><br>├─C#源码第一部分<br>│ ├─第1章 控件操作<br>│ │ ├─实例1 如何...
C#源码大集合 03(共3卷)<br><br>之前分为四个包,后两个包上传不了,对于已经下载的朋友表示赚意,现在重新再发一次(改为3卷)<br><br><br>├─C#源码第一部分<br>│ ├─第1章 控件操作<br>│ │ ├─实例1 如何...
<title>jQuery表格多选与颜色变换</title> <style> table tr:nth-child(even) { background-color: #f2f2f2; } .selected { background-color: #d9d9d9; /* 选中状态颜色 */ } </style> <script src=...
配图列表<br>列表 <br>1 说明<br>1.1 主要的内容<br>1.2 学习目标 <br>2 了解JavaScript 浏览器上的程序语言 <br>2.1 JavaScript 操作对象的简单介绍-- 属性和方法<br>2.2 JavaScript 代码的加入 <br>2.2.1 加入...
Bootstrap Select是一款基于Bootstrap框架的插件,用于增强和美化HTML的`<select>`元素,提供了一个功能丰富的下拉选择器,其中包括搜索功能、多选和单选等特性。这款插件使得在网页交互中,用户可以更方便地进行...
总结起来,这个示例展示了如何在Android应用中创建一个具有多选功能的自定义Dialog,通过Dialog、ListView和CheckBox的组合实现用户交互。这种功能在很多场景下都很实用,比如选择联系人、文件或者其他任何需要用户...
而"jQuery Multiple Select"则是jQuery的一个插件,专门用于实现下拉框的多选功能,使得用户可以在下拉菜单中选择多个选项,极大地提高了交互体验。这个插件在各种需要用户进行多项选择的场景中十分实用,例如设置...
单行填充题<br>多行填充题<br>单选+输入<br>多选+输入(可控选择数)<br>矩阵题<br>对选项进行分值设定 <br>集成输入验证 防IP重复提交<br>可设定问卷结束日期<br>可设定提交后的显示页<br>问卷密码前置<br>即时开关...
在HTML中,创建一个可多选的下拉框通常涉及到`<select>`元素与`<option>`元素的组合,但为了实现多选功能,我们需要使用`<input type="checkbox">`和自定义的JavaScript或者利用现代浏览器支持的Web组件技术。...
通过结合CSS和JavaScript,可以实现更加复杂和交互式的下拉框功能,以满足各种用户界面需求。在提供的压缩包文件中,`select.html`很可能是包含这些示例代码的HTML文件,而`css`和`js`文件则可能包含了对应的样式和...
安装完成后,我们可以通过简单的jQuery代码实现多选下拉框的功能。例如: ```html <select id="mySelect" multiple> <option value="value1">Option 1</option> <option value="value2">Option 2</option> ...
当我们希望实现多选功能时,就需要利用`<select>`的一些特定属性和方法。本篇文章将深入探讨如何在HTML、CSS以及JavaScript中实现`<select>`的多选特性。 ### HTML基础 在HTML中,`<select>`元素有一个名为`...
List<String> items = ...; // 这里填入你的选项 boolean[] checkedItems = ...; // 初始化选中状态 builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @...
可以通过在`<li>`内嵌套`<input type="checkbox">`来实现。同时,为了使视觉效果更加友好,可以使用CSS来定制checkbox的样式,使其看起来更像传统的下拉框。 在Jquery中,可以使用`.change()`事件监听checkbox的...
2. 分组选择:通过在`<optgroup>`标签中组织`<option>`,可以创建有层次的多选下拉框,帮助用户更好地理解和选择。 3. 全选/全取消:提供一键选择所有选项或清除所有已选选项的功能,简化用户的操作。 三、使用步骤...