android - 如何忽略 ListView 行中的点击

标签 android android-layout onitemclicklistener onitemclick

场景:我有 n 个选项卡,每个选项卡都有自己的 ListView 。我正在使用数组适配器来生成 ListView 。传递给 arrayadaper 的数组具有对象数组。每个对象都有一个“菜单”和“菜单类型”。现在根据菜单类型,如果菜单类型是“menugroup”,我将使用不同的布局进行绘制并将背景设置为红色。

问题很简单..每当单击 ListView 中的菜单组行时,什么都不会发生。换句话说,如何忽略在菜单组行中进行的单击。只需捕获 onItemClick 方法中菜单行中单击的详细信息。您能给我指出任何继续的想法/线索吗?提前致谢。

public class MyCustomAdapter  extends ArrayAdapter<Menu> {
private ArrayList<Menu> menuItemList; 
Context context;
LayoutInflater vi;

public MyCustomAdapter(Context context ,ArrayList<Menu> menu) {    
    super(context, 0, menu );    
    this.menuItemList = new ArrayList<Menu>();    
    this.menuItemList.addAll(menu); 
    this.context =context;
    vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
    }    

private class ViewHolder {
    TextView menuItem;   
    TextView menuGroup;  
    }

public int getItemViewType(int position) {
    if (menuItemList.get(position).getMenuType().equals("menugroup")) 
        return 0;
    return 1;
}
public int getViewTypeCount() {
    return 2;
}
public View getView(final int position, View convertView, ViewGroup parent) {      
    ViewHolder holder;   
    int type = getItemViewType(position); 

    if (convertView == null) { 
        holder = new ViewHolder();  
        switch (type) {
        case 0:
            convertView = vi.inflate(R.layout.group,  null); 
            holder.menuItem = (TextView) convertView.findViewById(R.id.tvGroup);
            convertView.setBackgroundColor(Color.RED); 
            break;              
        case 1:
            convertView = vi.inflate(R.layout.item,  null); 
            holder.menuItem = (TextView) convertView.findViewById(R.id.tvItem); 
            break; 
         }  
        convertView.setTag(holder); 
    } else {
        holder = (ViewHolder) convertView.getTag();  
    }    

    switch (type) {
    case 0:         
        holder.menuItem.setText(menuItemList.get(position).getItemName()) ; 
        convertView.setBackgroundColor(Color.RED);  
        break;              
    case 1:
        holder.menuItem.setText(menuItemList.get(position).getItemName()) ;  
        break; 
     }

    return convertView; 
    }

}

最佳答案

重写适配器中的 isEnabled() 并为任何不应被视为交互式的位置返回 false ( docs link )。默认情况下,这会为所有元素返回 true

关于android - 如何忽略 ListView 行中的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024099/

相关文章:

android - 文本 block 和图像的定位

android - 可以通过编程设置LayoutParams为fragment吗

android - 在GridView中设置item长按监听

android - 回收站 View : setOnClickListener not accessing full CardView

Java/Android代码优化: Does Java remove unreachable code on build

android - 如何根据 sqlite for Android 中的另一列值获取一列的最大值

android - 原生谷歌眼镜的资源目标?

java - Android - 等待 Volley 响应返回

android - RecyclerView 比 Android 中的 viewPager 好吗?

java - onItemClickListener如何让每个item有一个固定的名称?