listview条目用状态选择器没反应
button和imagebutton天生具有“可点击(click)”、“可按下(press)”的特性,radiobutton具有“可勾选(check)”的特性,但是listview的条目只有“可按下(press)”的特性,所以下面代码不起作用:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/menu_arr_select" android:state_selected="true"/>
<item android:drawable="@drawable/menu_arr_select" android:state_checked="true"/>
<item android:drawable="@drawable/menu_arr_normal" /> </selector>
listview的条目有enabled 特性,所以状态选择器这样写:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/menu_arr_select" android:state_enabled="true"/>
<item android:drawable="@drawable/menu_arr_normal" /> </selector>
然后代码还要做些处理(红色代码部分就是需要做的处理):
public class LeftMenuFragment extends BaseFragment {
@ViewInject(R.id.lv_list)
private ListView lvList;
private ArrayList<NewsMenuData> mNewsMenuData;// 侧边栏网络数据对象
private int mCurrentPos;// 当前被选中的item的位置
private LeftMenuAdapter mAdapter;
@Override
public View initView() {
View view = View.inflate(mActivity, R.layout.fragment_left_menu, null);
// lvList = (ListView) view.findViewById(R.id.lv_list);
ViewUtils.inject(this, view);// 注入view和事件
return view;
}
@Override
public void initData() {
}
// 给侧边栏设置数据
public void setMenuData(ArrayList<NewsMenuData> data) {
mCurrentPos = 0;//当前选中的位置归零
// 更新页面
mNewsMenuData = data;
mAdapter = new LeftMenuAdapter();
lvList.setAdapter(mAdapter);
lvList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
mCurrentPos = position;// 更新当前被选中的位置
mAdapter.notifyDataSetChanged();// 刷新listview
// 收起侧边栏
toggle();
// 侧边栏点击之后, 要修改新闻中心的FrameLayout中的内容
setCurrentDetailPager(position);
}
});
}
/**
* 设置当前菜单详情页
*
* @param position
*/
protected void setCurrentDetailPager(int position) {
// 获取新闻中心的对象
MainActivity mainUI = (MainActivity) mActivity;
// 获取ContentFragment
ContentFragment fragment = mainUI.getContentFragment();
// 获取NewsCenterPager
NewsCenterPager newsCenterPager = fragment.getNewsCenterPager();
// 修改新闻中心的FrameLayout的布局
newsCenterPager.setCurrentDetailPager(position);
}
/**
* 打开或者关闭侧边栏
*/
protected void toggle() {
MainActivity mainUI = (MainActivity) mActivity;
SlidingMenu slidingMenu = mainUI.getSlidingMenu();
slidingMenu.toggle();// 如果当前状态是开, 调用后就关; 反之亦然
}
class LeftMenuAdapter extends BaseAdapter {
@Override
public int getCount() {
return mNewsMenuData.size();
}
@Override
public NewsMenuData getItem(int position) {
return mNewsMenuData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(mActivity, R.layout.list_item_left_menu,
null);
TextView tvMenu = (TextView) view.findViewById(R.id.tv_menu);
NewsMenuData item = getItem(position);
tvMenu.setText(item.title);
if (position == mCurrentPos) {
// 被选中
tvMenu.setEnabled(true);// 文字变为红色
} else {
// 未选中
tvMenu.setEnabled(false);// 文字变为白色
}
return view;
}
}
}
listview条目用状态选择器没反应的更多相关文章
- listview设置条目点击的时候不变色(让状态选择器不起作用)
未设置前的效果如下图: 很明显,“酷狗音乐”那个条目被点击的时候,条目背景变为蓝色,怎么去掉这个颜色呢? java代码可以这么写: listView.setSelector(new ColorDraw ...
- Android—ListView条目背景为图片时,条目间距问题解决
ListView是android开发中使用最普遍的控件了,可有的listView条目的内容颇为丰富,甚至为了美观,背景用指定图片,如下图:
- Android状态选择器用法总结
原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6284682.html 本文首先列出常见状态选择器的创建,然后按照常用控件来分别列出状态选择器的具体 ...
- 深入学习jQuery选择器系列第六篇——过滤选择器之状态选择器
× 目录 [1]焦点状态 [2]哈希状态 [3]动画状态[4]显隐状态 前面的话 过滤选择器的内容非常多,本文介绍过滤选择器的最后一部分——状态选择器 焦点状态 :focus :focus选择器选择当 ...
- 使用radioGroup的时候,每个radioButton的状态选择器要使用 state_checked=""属性,不能使用selected
使用radioGroup的时候,每个radioButton的状态选择器要使用 state_checked=""属性,不能使用selected
- Android初级教程:如何自定义一个状态选择器
有这样一种场景:点击一下某个按钮或者图片(view),改变了样式(一般改变背景颜色).这个时候一种解决方案,可能就是状态选择器.接下来就介绍如何实现状态选择器: 步骤: 一.新建这样的文件夹:res/ ...
- 监听Listview的滚动状态,是否滚动到了顶部或底部
/** * @author:Jack Tony * @description : 监听listview的滑动状态,如果到了顶部就刷新数据 * @date :2015年2月9日 */ private c ...
- Android SwipeToDismiss:左滑/右滑删除ListView条目Item
<Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(githu ...
- ListView在编辑状态下不能获取修改后的值,无法更新数据
ListView在编辑状态下不能获取修改后的值,获取到的总是以前的值解决方法:在page_load事件里写: if(!IsPostBack) { ListViewBind(); } 原因:这涉及到as ...
随机推荐
- 实验吧Web-PHP大法
笔记 字符串比对解析,与大小写无关. eregi()函数 语法: eregi(string pattern, string string, array [regs]); 返回值: 整数/数组 特点:P ...
- IQueryable和IEnumerable,IList的区别
IQueryable和IEnumerable都是延时执行(Deferred Execution)的,而IList是即时执行(Eager Execution) IQueryable和IEnumerabl ...
- php中 xml json 数组 之间相互转换
php中 xml json 数组 之间相互转换 1 数组转json $result = array( 'status' =>$status, 'message'=>$message, ' ...
- 浙大pat1019题解
1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...
- 转Rollback后undo到底做了些什么?
转自:http://biancheng.dnbcw.info/oracle/309191.html Rollback后undo到底做了些什么? 从概念上讲,undo正好与redo相对.当你对数据执行修 ...
- MVC中发生System.Data.Entity.Validation.DbEntityValidationException验证异常的解决方法
发生System.Data.Entity.Validation.DbEntityValidationException这个异常的时候,如果没有用特定的异常类去捕捉,是看不到具体信息的. 通常都是用Sy ...
- Python中的list,tuple,dict,set
list=[11,"aa",33] 增: list.insert(1,"asas") list.append(22) 删: list.pop() list.po ...
- 国外vps品牌vultr宣布100%可用,宕机加倍补偿
全球知名的vps品牌vultr最近发狠招了,宣布所有vps服务器保证100%上线可用.如果出现宕机故障,提供加倍补偿方案.没有一家vps敢声称自己的产品100%可用,行业标准99.99%上线率已经是非 ...
- HttpReceiveRequestEntityBody 使用应注意的地方
如果EntityBody数据很大,调用此函数是不能完全接收全部数据的,我们不能简单的判断 1: BYTE* pBuffer = new BYTE[4096]; 2: ZeroMemory(pBuffe ...
- Activity间切换的动画应用
Activity切换过程中,系统会使用一些默认的动画,显得切换过程不至于太呆板. 在frameworks/base/core/res/res/values下的stlyes.xml文件中有具体的定义各个 ...