当前位置: 首页 > 知识库问答 >
问题:

尝试使用适配器内部的变量设置BackgroundColor时的StringIndexOutofBoundsException

宗政鸿志
2023-03-14

当我尝试放置一个带有十六进制颜色的String变量来设置适配器类中edittext的setBackgroundColor(color.ParseColor(Srings))时,它说

StringIndexOutofBoundsException,长度=0,索引=0。

当我手动将字符串插入Parsecolor中时,例如Parsecolor(“#ffffff”);,它就能工作!

我的适配器类:

public class TasksAdapter extends ArrayAdapter<Tasks> {
    private Context sContext;
    private List<Tasks> taskData = new ArrayList<>();
    public TasksAdapter(@NonNull Context context, @SuppressLint("SupportAnnotationUsage") @LayoutRes ArrayList<Tasks> list){
        super(context, 0, list);
        sContext = context;
        taskData = list;
    }
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent){
        View listItem = convertView;
        if(listItem == null)
            listItem = LayoutInflater.from(sContext).inflate(R.layout.item_tasks, parent,false);
        final Tasks presenteTask = taskData.get(position);
        TextView taskTitle = (TextView) listItem.findViewById(R.id.tasksTitle);
        taskTitle.setText(presenteTask.getTitle());
        EditText taskColor = (EditText) listItem.findViewById(R.id.taskColor);
        taskColor.setBackgroundColor(Color.parseColor(presenteTask.getHexaColor()));
        return listItem;
    }
}

共有1个答案

罗睿识
2023-03-14

TaskAdapterGetView()内,您的一个TaskData项在执行PresenteTask.GetHexacolor()期间返回空的Hexacolor。尝试下面的代码,它将停止您的应用程序被强制关闭,并且您将获得在catch内导致exception的项的位置。

public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent){
    View listItem = convertView;
    if(listItem == null)
        listItem = LayoutInflater.from(sContext).inflate(R.layout.item_tasks, parent,false);

    try {
        final Tasks presenteTask = taskData.get(position);
        TextView taskTitle = (TextView) listItem.findViewById(R.id.tasksTitle);
        taskTitle.setText(presenteTask.getTitle());
        EditText taskColor = (EditText) listItem.findViewById(R.id.taskColor);
        taskColor.setBackgroundColor(Color.parseColor(presenteTask.getHexaColor()));
    } catch(Exception ex) {
        Log.v(TasksAdapter.class.getSimpleName(), "Exception at: " + position);
    }

    return listItem;
}
 类似资料:
  • 我将linearlayout背景设置为可绘制文件,以便创建圆角外观: 在我的适配器中,在我膨胀布局项后,我正在尝试将背景颜色更改为“不同”的可绘制对象,以更改背景颜色: 问题是,这样做后,矩形失去了圆角外观,只是一个普通的老正方形。 两个可绘制的:矩形_上角 矩形_上角_高 我遗漏了一些保留圆角的东西?

  • 问题内容: 我刚刚开始自学Python,此脚本需要一些帮助: 我想得到它。 问题答案: 你快到了。您正在尝试修改全局变量,因此必须添加以下语句: 如果运行以下版本,则会看到您的版本中发生了什么: 输出: 运行它的方法,最终尝试在中修改函数的局部变量,这基本上是未定义的行为。请参阅文档中的警告: 注意: 默认 本地语言的 行为如以下功能所述:不应尝试对默认 本地 字典进行修改。如果需要在函数返回后查

  • 问题内容: 我正在尝试使用节点调试器。我正在运行服务器。然后我有: 在这一点上,正如预期的那样,当我运行此代码时,调试器弹出。但是,我希望它能够设置所有当前变量,就像在Chrome自己的调试器中一样。 但: 那么…我 实际上 如何检查当前变量? 额外的问题:是否可以使用Chrome的开发人员工具(CTRL-J)使其连接到节点并以这种方式工作?(我知道节点检查器,但是它已经过时了……) 问题答案:

  • 问题内容: 我想设置某些元素的样式属性,但是语法不正确。谁能建议我错了? 更新:对于任何查看此内容的人,请查看注释,这不是有效的代码。 问题答案: https://facebook.github.io/react/tips/inline- styles.html 您不需要引号。

  • 问题内容: 我正在做一个自动化的查询。它需要查找最后一天晚上8点到晚上8点之间的所有交易。我当时正在考虑做这样的事情 对于自动查询,这很适合找出日期部分。但是变量的TIME部分是查询执行的当前时间。有没有一种快速简单的方法来将两个变量的时间部分硬编码为8:00 PM? 问题答案:

  • 首先我想问一下这是不是可能的,设置值为全局变量在异步函数或承诺? 如果是,那么为什么每个可用的教程/网站都在教程中使用console.log(结果),但从来没有使用它将其赋值给variable。 例如: