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;
} } }

最新文章

  1. Tomcat使用详解
  2. 【leetcode】Permutations
  3. SQLServer 维护脚本分享(06)CPU
  4. 文本处理命令--cut、sort、join
  5. IOS中tableView每组的头部控件、通过tableView的代理方法控制某一行的cell能否达到高亮选中状态
  6. 精美&amp;创意的WordPress新发主题集合
  7. OC:基础学习
  8. Android关于buildToolVersion与CompileSdkVersion的区别
  9. Activti跳过中间节点的helloworld实例程序
  10. Python中With的用法
  11. Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
  12. Unity3DGUI:常用控件
  13. Redis in Docker on Linux Container
  14. Errors running builder &#39;Integrated External Tool Builder&#39; on project xxx
  15. Course1-Python数据类型总结
  16. qduoj前端二次开发简略流程
  17. Linux 系统下实践 VLAN
  18. 【AGC013C】Ants on a Circle 弹性碰撞
  19. ZooKeeper和CAP理论及一致性原则
  20. mysql 分区说明

热门文章

  1. Strusts2--课程笔记9
  2. 关于Java泛型的新解
  3. 关于ajax后台success传来json数据的问题
  4. eclipse设置JSP的默认编码
  5. L2-002. 链表去重
  6. 2016 Technology
  7. ManyToMany OrderBy
  8. JavaScript原生对象总纲
  9. LeetCode OJ 119. Pascal&#39;s Triangle II
  10. WTL版本ACEdit控件,改写自MFC版,附带源码