android - 禁用单击 ListView 中的一个数据适配器

标签 android listview android-listview

我正在使用 CWAC MergeAdapter - https://github.com/commonsguy/cwac-mergeListView 中添加两个数据适配器。像这样:

MergeAdapter mergeAdapter = new MergeAdapter();
mergeAdapter.addAdapter(yourFirstAdapter);
mergeAdapter.addAdapter(yourSecondAdapter);
list.setAdapter(mergeAdapter);

我还为我的 ListView 设置了一个项目点击监听器。然而,我想要的是只有来自 adapter1 的数据应该是可点击的。我该如何实现。我到目前为止是这样的:

ListView list = (ListView) findViewById(R.id.lv);

RelativeLayout secondAdapterlistRowLayout = (RelativeLayout) findViewById(R.id.secondrow);

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long mallId) {
            //go to the shops view
            if (adapterView.equals(secondAdapterlistRowLayout)){
                //do nothing
            }
            else {
                Intent intent = new Intent(getActivity(), ShopActivity.class);
                intent.putExtra("MALL_ID", (int) mallId);
                startActivity(intent);
            }
        }

    });

XML -- 行 2 -- 适配器 2

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F0F0F0"
    android:clickable="false"
    android:id="@+id/secondrow">
    ....
</RelativeLayout>

基本上我想这样做:

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long mallId) {

         if(R.id.secondrow is clicked){ then start a new activity }

        }
      }

最佳答案

我发现更简单的方法是获取被单击的资源名称,然后将其与行(即第二行)的资源名称进行比较

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long mallId) {

         if (getResources().getResourceEntryName(view.getId()).equals("secondrow"){
                     //then do something
            }
        //otherwise do nothing
        }
      }

关于android - 禁用单击 ListView 中的一个数据适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27941941/

相关文章:

java - Android - 显示所有已安装应用程序的应用程序选择器

java - 工具栏中的SearchView不过滤ListFragment

android - ListView 高度仅对第一项返回零

android - 如何从 fragment 中调用 fragment

android - 删除 ListView 项目仅删除第一个项目

android- 限制 edittext 只接受波斯语字符

android - 是否可以通过多个设备流式传输音频 channel

android - ListView:如何等到它加载完毕?

java - 将 JSON 对象写入 JSON 文件

android - Gear SDK SAFileTransfer FILE_IO 错误