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条目用状态选择器没反应的更多相关文章

  1. listview设置条目点击的时候不变色(让状态选择器不起作用)

    未设置前的效果如下图: 很明显,“酷狗音乐”那个条目被点击的时候,条目背景变为蓝色,怎么去掉这个颜色呢? java代码可以这么写: listView.setSelector(new ColorDraw ...

  2. Android—ListView条目背景为图片时,条目间距问题解决

    ListView是android开发中使用最普遍的控件了,可有的listView条目的内容颇为丰富,甚至为了美观,背景用指定图片,如下图:

  3. Android状态选择器用法总结

    原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6284682.html 本文首先列出常见状态选择器的创建,然后按照常用控件来分别列出状态选择器的具体 ...

  4. 深入学习jQuery选择器系列第六篇——过滤选择器之状态选择器

    × 目录 [1]焦点状态 [2]哈希状态 [3]动画状态[4]显隐状态 前面的话 过滤选择器的内容非常多,本文介绍过滤选择器的最后一部分——状态选择器 焦点状态 :focus :focus选择器选择当 ...

  5. 使用radioGroup的时候,每个radioButton的状态选择器要使用 state_checked=""属性,不能使用selected

    使用radioGroup的时候,每个radioButton的状态选择器要使用 state_checked=""属性,不能使用selected

  6. Android初级教程:如何自定义一个状态选择器

    有这样一种场景:点击一下某个按钮或者图片(view),改变了样式(一般改变背景颜色).这个时候一种解决方案,可能就是状态选择器.接下来就介绍如何实现状态选择器: 步骤: 一.新建这样的文件夹:res/ ...

  7. 监听Listview的滚动状态,是否滚动到了顶部或底部

    /** * @author:Jack Tony * @description : 监听listview的滑动状态,如果到了顶部就刷新数据 * @date :2015年2月9日 */ private c ...

  8. Android SwipeToDismiss:左滑/右滑删除ListView条目Item

     <Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(githu ...

  9. ListView在编辑状态下不能获取修改后的值,无法更新数据

    ListView在编辑状态下不能获取修改后的值,获取到的总是以前的值解决方法:在page_load事件里写: if(!IsPostBack) { ListViewBind(); } 原因:这涉及到as ...

随机推荐

  1. windows 激活等命令

    Win+R 输入:slmgr.vbs -dlv 显示:最为详尽的激活信息,包括:激活ID.安装ID.激活截止日期slmgr.vbs -dli 显示:操作系统版本.部分产品密钥.许可证状态slmgr.v ...

  2. openstack私有云布署实践【14.1 登录页dashboard-controller(科兴环境)】

    2台kxcontroller安装组件 # yum install openstack-dashboard -y   修改一样的配置 vi /etc/openstack-dashboard/local_ ...

  3. mobiscroll 插件札记(一)

    mobiscroll 插件笔记(一) 文章参照  http://www.cnblogs.com/headwolf/archive/2013/12/23/3487207.html 最近切一个移动页面,需 ...

  4. POJ 1323 Game Prediction#贪心

    (- ̄▽ ̄)-* //既然是求最少能胜几次 //说明对方是要尽可能让我输 //但为了避免浪费,对方会用比我的牌大的牌中的最小pip的牌来击败我 #include<iostream> #in ...

  5. POJ 2485 Highway(Prim+邻接矩阵)

    ( ̄▽ ̄)" //求最短总路径中的最大边长,Prim还需要一个Max变量 #include<iostream> #include<cstdio> #include&l ...

  6. 用户id有则更新,无则添加 使用replace into (代替 insert into)

    app登录成功后,调用后台,更新channel_id public function set_pushchannel($device,$channelid,$iv='' ) $sql = " ...

  7. 回车事件jquery

    有时候,操作按钮需要回车键 直接上代码: //回车事件document.onkeydown = function (e) { var ev = document.all ? window.event ...

  8. [转]Ubuntu系统下常用的新建、删除、拷贝文件命令

    我们在Ubuntu系统中安装程序时,经常要在usr目录下新建.拷贝文件,此文件夹在Linux类系统中需要root权限才能访问,因此用常规的鼠标右键菜单操作是无效的,今天分享一下在终端中使用命令新建.拷 ...

  9. Java 4

    1.继承的问题 子类是父类的一个扩展,子类可以利用父类的属性与行为,这种情况子类会破坏父类的封装 为了保持父类良好的封装性,设计父类有以下规则: 如果要把某类设计为最终类则需要添加final修饰符,或 ...

  10. 使用InternetReadFile时要注意读取完整数据

    使用这个api读取数据后,即使数据不完整,该函数不会报任何错,GetLastError也显示操作成功.使用时要注意通过其参数判断是否读取完毕 void InternetReadFileEx(HINTE ...