java - 带删除线的文本不保存

标签 java android paint

我正在制作一个杂货 list 应用程序,我编写了代码,当我单击一个项目时,它会将其标记出来。

这是我该部分的代码:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                TextView text = (TextView) view;
                if (!text.getPaint().isStrikeThruText()) {
                    text.setPaintFlags(text.getPaintFlags() |  Paint.STRIKE_THRU_TEXT_FLAG);
                }else{
                    text.setPaintFlags(text.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
                }


            }
        });
        }

它的工作原理与我想要的完全一样,但是当我在一个项目被标记后添加另一个项目时,所有被标记的项目,标记都会消失。

当我添加一个项目时,它就像重置一样。它不会删除我的任何项目,只是删除其中的 Strike_thru 部分。任何帮助将不胜感激!谢谢

最佳答案

ListView 的适配器包含一个名为 getView 的方法,当 ListView 项需要在实际 View 中显示时会调用该方法。如果您滚动到屏幕之外太远,或使整个 ListView 无效,ListView 中的 View 将被丢弃。

我的猜测是添加项目会使 ListView 无效。

您的 getView 方法应该在它返回的 View 上设置绘制标志。假设您的 ListView 显示 String[],您还需要一个 boolean[] 来保存项目是否完整。您需要将其初始化为所有 false,在 onItemClick 的开头添加一个 completed[i] = !completed[i]。然后,您可以在 if 语句中检查 competed[i] 而不是 isStrikeThruText ,稍后在该方法中。最后,你的 getView 看起来像这样

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
    }
    TextView textView = (TextView) convertView;
    textView.setText(items[position]);
    if (completed[position]) {
        textView.setPaintFlags(textView.getPaintFlags() |  Paint.STRIKE_THRU_TEXT_FLAG);
    } else {
        textView.setPaintFlags(textView.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
    }
    return textView;
}

关于java - 带删除线的文本不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53798432/

相关文章:

java - Maven 程序集插件 : Failed to retrieve numeric file attributes using: '/bin/sh -c ls -1nlaR

java - 代码没有按预期执行?

java - 以编程方式启动 WinAppDriver.exe

android - xml - 多次包含相同的布局不起作用

c++ - 使用 OpenCV 在网络摄像头上绘图

Android AvoidXferMode 绘图路径错误?

java - 使用 JSTL 获取 url 中的域名?

android - 协程中的 HandlerThread 替换

Android调用getview

Java - 使绘画程序更干净