运行效果:


main.xml

<?xml version="1.0" encoding="utf-8"?>    

list_items.xml

 <?xml version="1.0" encoding="utf-8"?>  

list_items_tag.xml

<?xml version="1.0" encoding="utf-8"?>  

MyAdapter.java

package com.iaiai; import java.util.List;import java.util.Map; import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView; public class MyAdapter extends BaseAdapter {   private LayoutInflater mInflater;   private List> listData;   private List> splitData;   public MyAdapter(Context context,     List> listData,     List> splitData) {   this.mInflater = LayoutInflater.from(context);   this.listData = listData;   this.splitData = splitData;  }   @Override  public int getCount() {   return listData.size();  }   @Override  public Object getItem(int position) {   return listData.get(position);  }   @Override  public long getItemId(int position) {   return position;  }   @Override  public boolean isEnabled(int position) {   if (splitData.contains(listData.get(position))) {     return false;   }   return super.isEnabled(position);  }   @Override  public View getView(final int position, View convertView, ViewGroup parent) {   if (splitData.contains(listData.get(position))) {     convertView = mInflater.inflate(R.layout.list_items_tag, null);   } else {     convertView = mInflater.inflate(R.layout.list_items, null);   }    TextView textView = (TextView) convertView.findViewById(R.id.itemTitle);   textView.setText(listData.get(position).get("itemTitle"));    return convertView;  }}

MainActivity.java

package com.iaiai; import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; import android.app.Activity;import android.os.Bundle;import android.widget.ListView; public class MainActivity extends Activity {   private List> mylist = new ArrayList>();  private List> splitList = new ArrayList>();   @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);    ListView list = (ListView) findViewById(R.id.MyListView);    setData(); // 设置数据    // 配置适配器   MyAdapter adapter = new MyAdapter(this, mylist, splitList); // 布局里的控件id   // 添加并且显示   list.setAdapter(adapter);  }   private void setData() {   // 组织数据源   Map mp = new HashMap();   mp.put("itemTitle", "A");   mylist.add(mp);   splitList.add(mp);    for (int i = 0; i < 3; i++) {     Map map = new HashMap();     map.put("itemTitle", "文章1-" + i);     mylist.add(map);   }    mp = new HashMap();   mp.put("itemTitle", "B");   mylist.add(mp);   splitList.add(mp);    for (int i = 0; i < 6; i++) {     Map map = new HashMap();     map.put("itemTitle", "文章2-" + i);     mylist.add(map);   }  }}

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

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

Java代码  

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

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

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

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

public boolean isEnabled (int position)


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

 

@Overridepublic boolean isEnabled(int position) {  if(splitData.contains(listData.get(position))) {   returnfalse;  }  returnsuper.isEnabled(position);}


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


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

更多相关文章

  1. Android生命周期的学习
  2. Android(安卓)无障碍辅助功能AccessibilityService(2)
  3. Android下拉列表使用方法
  4. Android实现各种对话框的变体
  5. android 公用的ViewHolder
  6. Android(安卓)IntentService 深入分析
  7. Android获得屏幕分辨率的两种方法
  8. android监听edittext输入事件
  9. JNI基本数据类型转换

随机推荐

  1. 如何在Scrapy CrawlSpider中访问特定的st
  2. 踏出第一步——安装并跑通python程序
  3. 使用python实现人脸检测
  4. python 虚拟机是单线程;当线程执行I/O密集
  5. 使用python如何在列表列表中找到元素,而关
  6. windows下多版本python安装
  7. 在python中创建指数函数。
  8. 你怎么检查python字符串是否只包含数字?
  9. python-selenium-定位一组对象
  10. Python学习记录--关于列表和字典的比较