ListView - 单击具有自定义适配器的侦听器删除项目触摸高亮显示

时间:2014-11-22 15:46:00

标签: java android android-listview

我为listview编写了一个自定义适配器。现在它包含不同类型的项目(比如标题和文本)。

标题不需要附加操作,因此我不希望在单击时看到项目触摸突出显示。但是,文本可以执行对于每个文本不同的动作。这是我的自定义适配器的代码。

    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        MyItemHolder myItemHolder;

        if (convertView == null) {
             //...;
            convertView.setTag(myItemHolder);
        } else {
            myItemHolder = (MyItemHolder) convertView.getTag();
        }

        MyItem myItem = myItems.get(position);
        if (myItem.isTitle()) {
            convertView.setOnClickListener(null);
        } else {            
            convertView.setOnClickListener(new View.OnClickListener() {                
                @Override
                public void onClick(View v) {
                    //do nothing at the moment
                }
            });
        }
        return convertView;
    }

如您所见,设置空单击侦听器会禁用列表的项目单击动画,所以我很好。但是,在设置空单击侦听器时,它也会删除此动画(实际上调用setOnClickListener会删除动画)。

如果它可以帮助我的列表视图xml:

<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/some_id"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:cacheColorHint="@android:color/transparent"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"/>

如何让我的listview中的默认项目点击动画,以查找我的适配器内不是标题的项目?

1 个答案:

答案 0 :(得分:0)

您应该在每个列表项上使用OnItemClickListener而不是onclick侦听器。禁用on&#34;标题&#34;上的onClick效果类型项,您可以在适配器类中使用isEnabled方法。

@Override
public boolean isEnabled(int position) {
    // TODO Auto-generated method stub
    return super.isEnabled(position);
}