- 浏览: 257731 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
aaddsfdsfsdfs:
var map = new AMap.Map('contain ...
【map】使用高德地图显示地图轨迹 -
di1984HIT:
xiang
【linux】使用bind进行DNS配置 -
di1984HIT:
分别算么??
【java】改写js百度地图测距方法 -
di1984HIT:
不错不错。。
【LBS】使用高德地图实现轨迹路线 -
di1984HIT:
不好用啊???
【map】使用高德地图显示地图轨迹
前面的已经介绍了如何将check选中,但是很不尽如人意的是,每次listView都会调用getView方法来刷新页面,所以导致之前选中的check会在调用getView之后会被取消。
通过:http://blog.csdn.net/whucyl/article/details/7341133
上面的提示对部件进行了重写。
使用一个select的方法,监听选中是否,然后加入一个hashmap,用来保存每次用户选中的状态,每次getView的查看此状态即可。
一下是代码:
MyAdapter方法:
然后Activity:
通过:http://blog.csdn.net/whucyl/article/details/7341133
上面的提示对部件进行了重写。
使用一个select的方法,监听选中是否,然后加入一个hashmap,用来保存每次用户选中的状态,每次getView的查看此状态即可。
一下是代码:
MyAdapter方法:
package com.duduli.li; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.database.Cursor; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.CheckedTextView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; public class MyAdapter extends SimpleCursorAdapter{ private List list = new ArrayList(); private HashMap<Integer, Boolean> isSelected = null; public String s[]; private List<Map<String, Object>> data; private LayoutInflater layoutInflater; private List<String> delNumber = new ArrayList<String>(); @SuppressWarnings("unused") private Context context; public MyAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); this.context = context; this.data = getData(); this.layoutInflater = LayoutInflater.from(context); isSelected = new HashMap<Integer, Boolean>(); } @Override public int getCount() { // TODO Auto-generated method stub return super.getCount(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return super.getItem(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return super.getItemId(position); } @SuppressWarnings("unused") @Override public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub Compan cp = null; if(cp == null){ cp = new Compan(); convertView = layoutInflater.inflate(R.layout.list, null); cp.id = (TextView) convertView.findViewById(R.id._id); cp.ctv = (CheckedTextView) convertView.findViewById(R.id.checkText); convertView.setTag(cp); }else{ cp = (Compan) convertView.getTag(); } cp.id.setText((CharSequence) data.get(position).get("_id")); cp.ctv.setText((CharSequence) data.get(position).get("Number")); // [b]此处即为状态保存的方法![/b] Boolean b = isSelected.get(position); if(null == b){ b = false; } if (convertView instanceof ViewGroup) { ViewGroup g = (ViewGroup) convertView; for (int i = 0; i < g.getChildCount(); i++) { View v = g.getChildAt(i); if (v instanceof CheckedTextView) { ((CheckedTextView) v).setChecked(b); break; } } } return convertView; } public List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); while (getCursor().moveToNext()) { Map<String, Object> map = new HashMap<String, Object>(); // System.out.println("ID: "+getCursor().getString(0)); map.put("_id", getCursor().getString(0)); // System.out.println("NAME: "+getCursor().getString(1)); map.put("Number", getCursor().getString(1)); list.add(map); } return list; } // 选中加入hashmap public void select(int postion, boolean isChecked) { isSelected.put(postion, isChecked); } }
然后Activity:
package com.duduli.li; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.CheckedTextView; import android.widget.ListView; import com.duduli.db.AllowCallDAO; /** * 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 CallComingTest2Activity extends ListActivity { private CheckedTextView multiple; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AllowCallDAO dao = new AllowCallDAO(this); MyAdapter adapter = new MyAdapter(this, R.layout.list, dao.show() , new String[]{"_id","phonenr"}, new int[]{R.id._id,R.id.checkText}); final ListView listView = getListView(); listView.setItemsCanFocus(false); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); setListAdapter(adapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub System.out.println(position); multiple = (CheckedTextView)v.findViewById(R.id.checkText); if (multiple != null) { multiple.toggle(); ((MyAdapter) l.getAdapter()).select(position, multiple.isChecked()); } if(multiple.isChecked()){ // getListView().getItemAtPosition(position); System.out.println("check"); }else{ System.out.println("not check"); } } }
评论
2 楼
duduli
2012-07-18
yangzhihui_1171 写道
AllowCallDAO,这个类从哪来啊?
package com.duduli.db; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class AllowCallDAO { private SQLiteDatabase db; private DBHelper dbh; public AllowCallDAO(Context context){ dbh = new DBHelper(context); } public void add(String number){ db = dbh.getWritableDatabase(); ContentValues cv = new ContentValues(); // cv.put("phonenr", ac.getPhonenr()); cv.put("phonenr", number); db.insert("allowcall", null, cv); // db.close(); } public Cursor show(){ db = dbh.getReadableDatabase(); Cursor cur = db.query("allowcall",null, null, null, null, null, null); System.out.println("show get the cursor count is "+cur.getCount()); // db.close(); return cur; } public void delete(List list){ db = dbh.getWritableDatabase(); for(int i=0; i<list.size(); i++){ System.out.println("delete id is "+list.get(i)); db.delete("allowcall", "_id=?", new String[]{(String) list.get(i)}); } // db.close(); } public void dbClose(){ db.close(); dbh.close(); } }
1 楼
yangzhihui_1171
2012-07-05
AllowCallDAO,这个类从哪来啊?
发表评论
-
【android】访问web service(大概功能版)
2012-10-30 08:36 1361增加功能: 1,用户点击次数过快。提示。 2,增加progre ... -
【android】web service访问
2012-10-26 10:20 1367android对web service的访问。使用ksoap2 ... -
【android】在2.3.3下面是用DDMS模拟位置会死机
2012-08-05 15:54 1065整了很久很久。每次都是死机。 调试也调试了很久,最后发现在2. ... -
【android】一个小问题让我纠结了很久
2012-03-20 09:43 1481之前处理cursor的方法:此方法是有问题的!!! pub ... -
【android】checkedTextView形成自定义ListView
2012-03-14 16:48 8811网络上的那个东西似乎都不准,以下是我做的此方法为可行。 首先, ... -
【android系统问题】呼叫状态变化
2012-03-09 14:09 1892测试。做一个Receiver监听手机通话状态。发现这样个问题。 ... -
【android】电话接听状态事件
2012-03-01 10:36 3358androidmanifest权限: <uses-per ... -
【android】自定义listView(转http://yilee.info/android-diy-listview.html)
2012-02-29 14:25 1639本文讲实现一个自定义列表的Android程序,程序将实现一个使 ... -
【android】 sqliter数据库CRUD
2012-02-27 16:16 1334基础类,DBHelper package com.duduli ... -
【android】以前没有注意的一个ListActivity的问题
2012-02-27 15:52 1378以前自己都很少使用ListActivity。今天使用的时候就出 ... -
【android】的startActivityForResult
2012-02-24 16:41 1226似乎这个做登录或是论坛回复很好的。 不用返回。 一下几点需要注 ... -
【android】widget生命周期
2012-02-23 17:07 3587在widget开发的时候生命周期如下: 第一次创建桌 ... -
【android】传感器
2011-12-03 10:41 1026IBM develop 对android传感器的研究与开发。 ... -
【android】使用百度api获得你的地址
2011-12-02 12:06 3787采用百度开放平台的api对自己位置的定位的好处有很多。 1,完 ... -
【android】练手的小玩意
2011-11-30 16:17 1050这是个小程序,调用Google地图。显示你的大概位置。 当然不 ... -
【android】 百度地图应用开发(一)
2011-11-30 11:47 1758百度提供给我相当多的地图开发的api,比如地图,比如定位。 初 ... -
【android】利用service监听来电或来信息
2011-11-28 16:09 8100写这个东西只是为了练手,拍砖随意。反正自己也是菜鸟。 微信/Q ... -
【android地图】开发出现的问题。
2011-11-26 16:24 11202个问题,在虚拟机上没有这样的问题,但是到真机上实验的时候去出 ... -
android开发下的一些技术要点【如有需要会更新】
2011-11-14 15:36 38501,对于去title方法。在o ... -
android开发:Google天气获得气象信息
2011-11-07 16:21 1109这个只能算是半成品,之前想做一个wigdit的。可是没完成。 ...
相关推荐
总结,自定义ListView实现单选是Android开发中常见的需求。通过创建自定义Adapter,处理点击事件,以及优化视图复用,我们可以轻松实现这一功能。同时,自定义ListView也能为开发者提供更大的灵活性,以满足各种复杂...
6. **优化性能**: 自定义ListView时,为了提高性能,我们通常会使用convertView机制。在`getView()`方法中,如果传入的convertView不为空,那么可以复用这个视图,减少视图的创建,提升滑动流畅性。 7. **复选框...
为了实现选择功能,我们通常会用到CheckedTextView或者自定义的Checkable布局作为ListView的列表项。 1. **自定义Adapter**: 创建一个继承自BaseAdapter的自定义Adapter,重写其四个关键方法:`getCount()`、`...
- 若需在ListView项中添加复选框,可以使用CheckedTextView或自定义布局。同时,设置`setChoiceMode()`启用选择模式,如单选(CHOICE_MODE_SINGLE)或多选(CHOICE_MODE_MULTIPLE)。 8. **下拉刷新和上拉加载更多...
与CheckedTextView不同,CheckableTextView并不是Android SDK自带的控件,而是开发者自定义的一个类,它可以扩展任何TextView,并添加可选中功能。这样做的好处是灵活性更高,可以根据项目需求定制更多的行为和样式...
如果你的ListView项是自定义的View,你可以使用实现`Checkable`接口的子视图,如`CheckedTextView`,这样在选中时会自动处理背景颜色和复选标记。 综上所述,创建一个多选ListView涉及设置ChoiceMode、维护选中状态...
`FullListView`可能是一个包含上述所有功能的自定义ListView实现,它不仅支持列宽的拖动调整,还能显示和停止运行的程序。这个示例可以帮助开发者更好地理解如何在实际项目中使用和扩展ListView。 总之,Android的...
总之,实现Android三级目录和ListView单选及二级单选涉及到了数据结构、自定义Adapter、事件监听、布局设计等多个Android开发的关键技术。通过这些技术的组合,我们可以创建出一个功能完整且用户体验良好的目录选择...
在ListView的每一项中,我们可以使用CheckedTextView,它内置了勾选状态的显示。在适配器的getView()方法中,根据当前项是否被选中来设置CheckedTextView的状态: ```java @Override public View getView(int ...
另外,如果自定义View需要根据用户的选择状态改变显示,可以使用`CheckedTextView`或自定义的Checkable接口。 总的来说,这个示例提供了如何在Android的ListView中实现长按子项添加自定义View的参考。通过学习和...
在ListView的每个列表项中使用CheckedTextView,可以方便地实现单个条目的选择状态。 2. **Adapter**:ListView的数据源通常通过Adapter来提供,例如ArrayAdapter或BaseAdapter。在适配器中,我们需要维护一个选中...
在布局文件中,我们可以使用`CheckedTextView`作为列表项,以便显示每个选项并允许用户进行选择。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> <ListView android:id="@+...
为了提高性能,ListView使用了View的复用机制。在`getView()`方法中,需要正确处理复用的View,确保其显示的数据与当前的数据项匹配。 7. **保存和恢复选择状态** 如果应用需要在旋转屏幕或其他情况下保持选择...
虽然题目是关于ListView的,但现代的Android开发中,通常推荐使用RecycleView代替ListView,因为它提供了更多的自定义选项和更好的性能。实现RecycleView的选中高亮效果与ListView类似,只是需要适配的是...
而当需要在ListView的每一项中加入可选的复选框(Checkbox)时,我们通常会涉及到`android listview + checkbox`的组合使用。这个组合允许用户对列表中的每一项进行选择,常见于多选操作场景,如设置、过滤器选择等...
这个"android listview 例子"着重展示了ListView在实际应用中的复杂使用方式,特别是如何在一个ListView中包含各种不同的控件,以实现丰富的界面效果。 ListView的工作原理基于Adapter模式,Adapter是连接数据源和...
如果需要在列表项中包含复选框,可以使用CheckedTextView或者自定义布局,并在Adapter中处理复选状态。同时,ListView还支持选择模式,如SINGLE_CHOICE, MULTIPLE_CHOICE等,可以通过`setChoiceMode()`设置。 **6. ...
【UI】Android列表ListView使用 在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据,通过滚动的方式节省屏幕空间。ListView通过Adapter机制将数据与视图进行绑定,实现数据与界面的分离,提高了...
实现ListView的单选,我们可以使用CheckedTextView或者自定义适配器来配合CheckedStateTracker类进行操作。下面我们将详细探讨如何实现这一功能。 首先,我们来看看CheckedTextView。CheckedTextView是TextView的...