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

Java 尝试使用适配器内的变量设置BackgroundColor时StringIndexOutofBoundsException,java,android,Java,Android,当我尝试放置一个字符串变量,其中包含十六进制颜色,以设置适配器类上edittext的setbackgroundcolor(color.parseColor(String s)),它说 StringIndexOutofBoundsException,长度=0,索引=0 当我手动在parseColor中插入字符串时,例如parseColor(“#ffffff”),它可以工作 我的适配器类: public class TasksAdapter extends ArrayAdapter<Tasks

当我尝试放置一个字符串变量,其中包含十六进制颜色,以设置适配器类上edittext的
setbackgroundcolor(color.parseColor(String s))
,它说

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;
    }
}
公共类TasksAdapter扩展了ArrayAdapter{
私人语境;
private List taskData=new ArrayList();
公共任务适配器(@NonNull上下文上下文,@SuppressLint(“SupportAnnotationUsage”)@LayoutRes ArrayList列表){
超级(上下文,0,列表);
sContext=上下文;
任务数据=列表;
}
@非空
@凌驾
公共视图getView(int位置,@Nullable视图convertView,@NonNull视图组父级){
查看列表项=转换视图;
如果(listItem==null)
listItem=LayoutInflater.from(sContext).充气(R.layout.item\u任务,父项,false);
最终任务PresentTask=taskData.get(位置);
TextView任务标题=(TextView)listItem.findViewById(R.id.tasksTitle);
taskTitle.setText(presentTask.getTitle());
EditText taskColor=(EditText)listItem.findViewById(R.id.taskColor);
setBackgroundColor(Color.parseColor(presentTask.getHexaColor());
返回列表项;
}
}
错误:

E/AndroidRuntime:致命异常:主 进程:com.example.mylcm,PID:672 java.lang.StringIndexOutOfBoundsException:长度=0;索引=0 位于java.lang.String.charAt(本机方法) 位于android.graphics.Color.parseColor(Color.java:1384) 位于com.example.mylcm.Utils.Adapters.TasksAdapter.getView(TasksAdapter.java:49) 在android.widget.AbsListView.obtainView(AbsListView.java:2365) 位于android.widget.ListView.makeAndAddView(ListView.java:2052) 在android.widget.ListView.fillDown(ListView.java:786)中 位于android.widget.ListView.fillFromTop(ListView.java:847) 位于android.widget.ListView.layoutChildren(ListView.java:1826) 在android.widget.AbsListView.onLayout(AbsListView.java:2164) 在android.view.view.layout(view.java:19659) 位于android.view.ViewGroup.layout(ViewGroup.java:6075) 位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) 位于android.widget.LinearLayout.layouuthorizontal(LinearLayout.java:1780) 位于android.widget.LinearLayout.onLayout(LinearLayout.java:1546) 在android.view.view.layout(view.java:19659) 位于android.view.ViewGroup.layout(ViewGroup.java:6075) 在android.widget.RelativeLayout.onLayout(RelativeLayout.java:1083)上 在android.view.view.layout(view.java:19659) 位于android.view.ViewGroup.layout(ViewGroup.java:6075) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:261) 在android.view.view.layout(view.java:19659) 位于android.view.ViewGroup.layout(ViewGroup.java:6075) 位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) 位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635) 位于android.widget.LinearLayout.onLayout(LinearLayout.java:1544) 在android.view.view.layout(view.java:19659) 位于android.view.ViewGroup.layout(ViewGroup.java:6075) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:261) 在android.view.view.layout(view.java:19659) 位于android.view.ViewGroup.layout(ViewGroup.java:6075) 位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) 位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635) 位于android.widget.LinearLayout.onLayout(LinearLayout.java:1544) 在android.view.view.layout(view.java:19659) 位于android.view.ViewGroup.layout(ViewGroup.java:6075) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:261) 位于com.android.internal.policy.DecorView.onLayout(DecorView.java:761) 在android.view.view.layout(view.java:19659) 位于android.view.ViewGroup.layout(ViewGroup.java:6075) 在android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2496) 在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:2212) 位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392) 在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752) 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:911) 位于android.view.Choreographer.doCallbacks(Choreographer.java:723) 位于android.view.Choreographer.doFrame(Choreographer.java:658) 在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)中 位于android.os.Handler.handleCallback(Handler.java:790) 位于android.os.Handler.dispatchMessage(Handler.java:99) 位于android.os.Looper.loop(Looper.java:164) 位于android.app.ActivityThread.main(ActivityThread.java:6494) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

TaskAdapter的
getView()
内,在执行
presentTask.getHexaColor()
期间,您的
taskData
项返回空
hexaColor
。尝试下面的代码,它将停止您的应用程序被强制关闭,您将获得
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;
}
taskColor.setBackgroundColor(Color.parseColor(presenteTask.getHexaColor()));