ListView 带有 longClick 用于显示和隐藏复选框?

2024-04-02

我沿着代码在这里(网络链接)。 http://windrealm.org/tutorials/android/listview-with-checkboxes-without-listactivity.php并且代码稍微修改了一下,变成了这样:

文件数组适配器.java

public class FileArrayAdapter extends ArrayAdapter<Item> {

    private Context c;
    private int id;
    private List<Item> items;

    public FileArrayAdapter(Context context, int textViewResourceId,
            List<Item> objects) {
        super(context, textViewResourceId, objects);
        c = context;
        id = textViewResourceId;
        items = objects;
    }

    public Item getItem(int i) {
        return items.get(i);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) c
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(id, null);
        }

        /* create a new view of my layout and inflate it in the row */
        // convertView = ( RelativeLayout ) inflater.inflate( resource, null );

        final Item o = items.get(position);
        if (o != null) {
            TextView t1 = (TextView) v.findViewById(R.id.TextView01);
            setDefaultTextColor(t1);

            TextView t2 = (TextView) v.findViewById(R.id.TextView02);
            setDefaultTextColor(t2);

            TextView t3 = (TextView) v.findViewById(R.id.TextViewDate);
            setDefaultTextColor(t3);

            /* Take the ImageView from layout and set the city's image */
            ImageView imageCity = (ImageView) v.findViewById(R.id.fd_Icon1);
            String uri = "drawable/" + o.getImage();
            int imageResource = c.getResources().getIdentifier(uri, null,
                    c.getPackageName());
            Drawable image = c.getResources().getDrawable(imageResource);
            imageCity.setImageDrawable(image);

            if (t1 != null)
                t1.setText(o.getName());
            if (t2 != null)
                t2.setText(o.getData());
            if (t3 != null)
                t3.setText(o.getDate());
        }
        return v;
    }

    private void setDefaultTextColor(TextView tx) {
        tx.setTextColor(Color.parseColor("#f8f9fe"));
    }
}

还有我迄今为止制作的另一个对象:

项目.java

public class Item implements Comparable<Item>{
    private String name;
    private String data;
    private String date;
    private String path;
    private String image;

    public Item(String n,String d, String dt, String p, String img)
    {
            name = n;
            data = d;
            date = dt;
            path = p;
            image = img;           
    }
    public String getName()
    {
            return name;
    }
    public String getData()
    {
            return data;
    }
    public String getDate()
    {
            return date;
    }
    public String getPath()
    {
            return path;
    }
    public String getImage() {
            return image;
    }
    public int compareTo(Item o) {
            if(this.name != null)
                    return this.name.toLowerCase().compareTo(o.getName().toLowerCase());
            else
                    throw new IllegalArgumentException();
    } }

下面对列表布局进行了一些自定义:listupload_row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView
        android:contentDescription="@string/file_sharing_file_folder"
        android:id="@+id/fd_Icon1"
        android:layout_width="50dip"
        android:layout_height="50dip" >
    </ImageView>

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dip"
        android:layout_marginTop="5dip"
        android:layout_toRightOf="@+id/fd_Icon1"
        android:singleLine="true"
        android:text="@+id/TextView01"
        android:textStyle="bold" >
    </TextView>

    <TextView
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/TextView01"
        android:layout_marginLeft="10dip"
        android:layout_toRightOf="@+id/fd_Icon1"
        android:text="@+id/TextView02" >
    </TextView>

    <TextView
        android:id="@+id/TextViewDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/TextView01"
        android:layout_marginLeft="5dip"
        android:text="@+id/TextViewDate" >
    </TextView>

</RelativeLayout>

我的问题是:

I know 如果我想放置复选框,那么我应该将其放在 XML(布局)下。 但我的情况是,我想让 longClick 可用于显示复选框。 以及如何做到这一点?

如果我只是在下面添加此代码,当然它会将 ListView 设置为具有 onLongClick 事件......

dList.setLongClickable(true);

dList.setOnItemLongClickListener(new OnItemLongClickListener() {

    public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
            int pos, long id) {

        // show the checkbox of each lines

        return true;
    }
});

但要使其在执行 onLongClick 后,如何显示组合框?反之亦然......


一种可能的解决方案是根据项目收到长按时切换的标志来隐藏/显示复选框。 在适配器的 getView 方法中执行以下操作:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ...
    if(showCheckBoxes) {
        v.findViewById(R.id.checkbox).setVisible(View.VISIBLE);
    } else {
        v.findViewById(R.id.checkbox).setVisible(View.GONE);
    }
    ...
}

然后在长按监听器中:

dList.setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int pos, long id) {
        showCheckBoxes = !showCheckBoxes;
        fileArrayAdapter.notifyDataSetChanged();
        return true;
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ListView 带有 longClick 用于显示和隐藏复选框? 的相关文章

随机推荐

  • 如何从 WooCommerce 店面主题主页隐藏页面标题?

    我试图隐藏主页上的店面页面标题 此代码从各个方面隐藏它 function sf change homepage title args remove action storefront page storefront page header
  • 如何做一个连续回收UIView动画

    下面的代码将图像视图从右向左移动一次 但我想连续这样做 从右向左移动 然后在屏幕外向左移回 然后再次从右向左重复 imageview UIImageView alloc initWithFrame CGRectMake 320 200 26
  • PHP 中的一行 if 语句

    我想要一些类似于 JavaScript 的东西 var foo true foo doSometing 但这似乎在 PHP 中不起作用 如果满足条件 我会尝试向标签添加一个类 并且为了可读性 我希望将嵌入的 PHP 保持在最低限度 到目前为
  • 如何做到“如果单击其他..”

    我正在尝试使用 jQuery 来做类似的事情 if jQuery id click do some stuff else run function2 但我不确定如何使用 jQuery 来做到这一点 任何帮助将不胜感激 Edit 我正在尝试运
  • 我们可以动态添加文本字段吗

    我在我的聊天机器人中创建了一个自适应卡 使用 json 它接受用户的输入 我想添加一个按钮 使用户每次单击插入字段时都可以添加新的文本字段 即 用户可以单击插入按钮输入教育详细信息 学校 学院等 这可以在自适应卡中实现吗 我也想知道 自适应
  • 在文本段中创建具有给定大小的 C 函数

    我正在编程一个嵌入式powerpc questions tagged powerpc32位系统具有32 kbyte 8路组相联二级指令缓存 为了避免缓存抖动 我们以某种方式对齐函数 使得高频调用的一组函数的文本 想想中断代码 最终出现在单独
  • 在 Flash 对象内滚动时防止网页滚动

    我确信这一定是一个常见问题 但我在其他地方没有找到答案 我在一个长网页中嵌入了一个 Flash 对象 我侦听 Flash 中的 MOUSE WHEEL 事件 并相应地滚动 Flash 内容 但是 当我滚动 Flash 对象时 网页也会滚动
  • CORS 在 wso2 身份服务器中被阻止

    我将 WSO2is 5 7 0 与我的 Angular 6 应用程序一起使用 我尝试从我的应用程序进行 api 调用 但出现 cors 错误 Cross Origin Request Blocked The Same Origin Poli
  • 使用 telephonyserivce.endcall() 在 android 中结束通话

    我正在开发一个应用程序 我想在其中结束拨出呼叫 这是主要课程 import android app Activity import android content ActivityNotFoundException import andro
  • iPhone 游戏开发者 - 你们的工具链是什么样的?

    例如 源代码控制 git adobe驱动 3d 谷歌sketchup gt dae gt 搅拌机 gt obj 2d photoshop illustrator gt png 音频 大胆 gt caf 代码 ArgoUML Xcode Te
  • 使用 xcworkspace 时一直收到 ld:找不到 -lBolts 的库

    你好 这是我的Podfile Uncomment this line to define a global platform for your project platform ios 8 4 Uncomment this line if
  • 如何更改微调器文本大小和文本颜色?

    在我的 Android 应用程序中 我使用 spinner 并且我已将 SQLite 数据库中的数据加载到 spinner 中 并且它工作正常 这是代码 Spinner spinner Spinner this findViewById R
  • 如何以与参考线本身相同的角度注释参考线?

    我需要找到一种方法以与参考线本身相同的角度注释参考线 以下语句将生成参考线及其上方的标签 但是 线的斜率可能会发生变化 我需要找到一种方法来确保注释始终处于相同的角度 plot 1 10 1 10 abline a 8 b 1 text x
  • 是否可以自定义使用 Spring Native(使用 buildpack)生成的 docker 镜像

    我目前正在开发一个 Spring Native 应用程序 它使用 paketo buildpack 进行构建并生成 Docker 映像 我想知道是否可以通过添加第三方工具 例如 Datadog 代理 来自定义生成的 Docker 映像 另外
  • 大十进制乘法

    我尝试将两个相乘BigDecimal价值观与multiply方法如下 BigDecimal dur BigDecimal valueOf 60 1 1 BigDecimal bal BigDecimal valueOf 1 1 BigDec
  • 如何在 Windows 中使用批处理脚本创建符号链接?

    我当前正在使用以下脚本将具有特定前缀的所有文件复制到目标目录 for f delims k in dir d Search Path File Prefix s b do copy k d Target Directory 这工作正常 但我
  • Rails 文件下载和查看更新 - Howto?

    这看起来应该是直截了当的 但我很难过 我有一个视图控制器的链接 最终使用 send data 将文件下载到用户的硬盘驱动器 这非常有效 并且它使当前视图显然没有受到影响 但现在我希望页面在下载完成后提供一些反馈 在调用 send data
  • 用户、组和角色的多对多声明式 SQLAlchemy 定义

    我是 SQLAlchemy 的新手 想知道定义此类表和关系的最佳方法是什么 我希望能够通过以下方式访问用户组user groups 分组中的用户group users 并找出用户在组中的角色 我假设将在关联模型中定义逻辑 我还想按组选择所有
  • 如何将perl6文件编译为exe

    我正在使用基于 Windows 上 MoarVM 构建的 perl6 版本 我创建了一些 perl6 文件并想将其编译为 exe 我尝试了以下方法 perl6 target MAST r pl gt r 现在我想将 r 编译为可执行文件 我
  • ListView 带有 longClick 用于显示和隐藏复选框?

    我沿着代码在这里 网络链接 http windrealm org tutorials android listview with checkboxes without listactivity php并且代码稍微修改了一下 变成了这样 文件