运行效果:


main.xml

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="horizontal"android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <ListViewandroid:layout_width="fill_parent"
  6. android:layout_height="wrap_content"android:id="@+id/MyListView">
  7. </ListView>
  8. </LinearLayout>

list_items.xml

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"android:id="@+id/myListItem"
  5. android:paddingBottom="4dip"android:paddingLeft="12dip"
  6. android:paddingRight="12dip">
  7. <TextViewandroid:layout_height="wrap_content"
  8. android:layout_width="fill_parent"android:id="@+id/itemTitle"
  9. android:textSize="20dip"/>
  10. </LinearLayout>

list_items_tag.xml

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"android:layout_height="wrap_content"
  4. android:background="#555555"android:paddingLeft="10dip">
  5. <TextViewandroid:id="@+id/itemTitle"android:layout_width="wrap_content"
  6. android:layout_height="20dip"android:textColor="#ffffff"
  7. android:gravity="center_vertical"/>
  8. </LinearLayout>

MyAdapter.java

[java] view plain copy
  1. packagecom.iaiai;
  2. importjava.util.List;
  3. importjava.util.Map;
  4. importandroid.content.Context;
  5. importandroid.view.LayoutInflater;
  6. importandroid.view.View;
  7. importandroid.view.ViewGroup;
  8. importandroid.widget.BaseAdapter;
  9. importandroid.widget.TextView;
  10. publicclassMyAdapterextendsBaseAdapter{
  11. privateLayoutInflatermInflater;
  12. privateList<Map<String,String>>listData;
  13. privateList<Map<String,String>>splitData;
  14. publicMyAdapter(Contextcontext,
  15. List<Map<String,String>>listData,
  16. List<Map<String,String>>splitData){
  17. this.mInflater=LayoutInflater.from(context);
  18. this.listData=listData;
  19. this.splitData=splitData;
  20. }
  21. @Override
  22. publicintgetCount(){
  23. returnlistData.size();
  24. }
  25. @Override
  26. publicObjectgetItem(intposition){
  27. returnlistData.get(position);
  28. }
  29. @Override
  30. publiclonggetItemId(intposition){
  31. returnposition;
  32. }
  33. @Override
  34. publicbooleanisEnabled(intposition){
  35. if(splitData.contains(listData.get(position))){
  36. returnfalse;
  37. }
  38. returnsuper.isEnabled(position);
  39. }
  40. @Override
  41. publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){
  42. if(splitData.contains(listData.get(position))){
  43. convertView=mInflater.inflate(R.layout.list_items_tag,null);
  44. }else{
  45. convertView=mInflater.inflate(R.layout.list_items,null);
  46. }
  47. TextViewtextView=(TextView)convertView.findViewById(R.id.itemTitle);
  48. textView.setText(listData.get(position).get("itemTitle"));
  49. returnconvertView;
  50. }
  51. }

MainActivity.java

[java] view plain copy
  1. packagecom.iaiai;
  2. importjava.util.ArrayList;
  3. importjava.util.HashMap;
  4. importjava.util.List;
  5. importjava.util.Map;
  6. importandroid.app.Activity;
  7. importandroid.os.Bundle;
  8. importandroid.widget.ListView;
  9. publicclassMainActivityextendsActivity{
  10. privateList<Map<String,String>>mylist=newArrayList<Map<String,String>>();
  11. privateList<Map<String,String>>splitList=newArrayList<Map<String,String>>();
  12. @Override
  13. protectedvoidonCreate(BundlesavedInstanceState){
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. ListViewlist=(ListView)findViewById(R.id.MyListView);
  17. setData();//设置数据
  18. //配置适配器
  19. MyAdapteradapter=newMyAdapter(this,mylist,splitList);//布局里的控件id
  20. //添加并且显示
  21. list.setAdapter(adapter);
  22. }
  23. privatevoidsetData(){
  24. //组织数据源
  25. Map<String,String>mp=newHashMap<String,String>();
  26. mp.put("itemTitle","A");
  27. mylist.add(mp);
  28. splitList.add(mp);
  29. for(inti=0;i<3;i++){
  30. Map<String,String>map=newHashMap<String,String>();
  31. map.put("itemTitle","文章1-"+i);
  32. mylist.add(map);
  33. }
  34. mp=newHashMap<String,String>();
  35. mp.put("itemTitle","B");
  36. mylist.add(mp);
  37. splitList.add(mp);
  38. for(inti=0;i<6;i++){
  39. Map<String,String>map=newHashMap<String,String>();
  40. map.put("itemTitle","文章2-"+i);
  41. mylist.add(map);
  42. }
  43. }
  44. }

========================================================================
以上为示例所有代码,以下为说明

禁止标签项的响应事件,父类BaseAdapter中提供了isEnable的()方法,我们看看这个方法:

Java代码

  1. //默认情况,如果这个方法不是分割符,返回true
  2. //分隔符是无选中和无点击事件的
  3. //说白了,你想不想把改position项当做分隔符,想的话就返回false,否则返回true
  4. publicbooleanisEnabled(intposition)

//默认情况,如果这个方法不是分割符,返回true

//分隔符是无选中和无点击事件的

//说白了,你想不想把改position项当做分隔符,想的话就返回false,否则返回true

public boolean isEnabled (int position)


这个方法刚好用来禁用标签项的响应事件。

[java] view plain copy
  1. @Override
  2. publicbooleanisEnabled(intposition){
  3. if(splitData.contains(listData.get(position))){
  4. returnfalse;
  5. }
  6. returnsuper.isEnabled(position);
  7. }


现在标签项不会再有任何触控效果了,犹如一块死木板。


原地址:http://blog.sina.com.cn/s/blog_4ca9ceef0100za7f.html

更多相关文章

  1. android MTK modem编译方法
  2. Android(安卓)设置全屏显示的方法
  3. 【Android】 ProcessBuild Process su 命令
  4. Android(安卓)调用系统相机拍照的返回结果
  5. vs xamarin android 监听返回键退出程序
  6. Android(安卓)永久隐藏导航栏,系统栏的方法
  7. Android(安卓)— 创建和修改 Fragment 的方法及相关注意事项
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android UI(3)Getting Started - Saving
  2. Android打开pdf,docx,doc,.xls,xlsx,结尾的文
  3. android中Touch事件处理
  4. 2010.11.11———Android TabHost选项卡
  5. android SDK升级连接不上服务器解决方案
  6. Android客户端与服务端交互-客户端GET方
  7. Android点击2次返回按钮退出应用程序
  8. Android(安卓)Service小记
  9. android资源合集
  10. [学习记录]android 状态栏背景修改为透明