简体   繁体   English

如何更改Listview中行的背景?

[英]How Do I Change The Background Of Rows Within a Listview?

I have a listview with a customAdapter that is this: 我有一个带customAdapter的列表视图是这样的:

The custom adapter is intended to pick a custom color for each row in the listview. 自定义适配器旨在为列表视图中的每一行选择一种自定义颜色。

 final ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_activated_1, notes){
        @Override
        public View getView(int position, View convertView, ViewGroup parent){
            // Get the current item from ListView
            View view = super.getView(position,convertView,parent);
            for(int i = 0; i <= sharedPreferences.getStringSet("myList", null).size(); i++){
                //TODO: Create Array Of Colors

                    view.setBackgroundColor(Color.rgb(Integer.parseInt(reds.get(i)), Integer.parseInt(greens.get(i)), Integer.parseInt(blues.get(i))));

            }return view;
        }
    };

The error I get states that theres a problem with line 61, which is the "public View view..." line. 我得到的错误指出第61行存在问题,这是“ public View view ...”行。 IF I Comment out this line, no error occurs. 如果我注释掉这一行,则不会发生任何错误。

view.setBackgroundColor(Color.rgb(Integer.parseInt(reds.get(i)), Integer.parseInt(greens.get(i)), Integer.parseInt(blues.get(i))));

I've been trying to make this custom adapter all day so any help would be awesome. 我一直在努力使这个自定义适配器整天都在工作,所以任何帮助都会很棒。

Error Code: 错误代码:

06-12 20:21:05.910 8532-8532/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.jackson.adhdagenda, PID: 8532
java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
    at java.util.ArrayList.get(ArrayList.java:308)
    at com.example.jackson.adhdagenda.MainActivity$1.getView(MainActivity.java:61)
    at android.widget.AbsListView.obtainView(AbsListView.java:2347)
    at android.widget.ListView.makeAndAddView(ListView.java:1864)
    at android.widget.ListView.fillDown(ListView.java:698)
    at android.widget.ListView.fillFromTop(ListView.java:759)
    at android.widget.ListView.layoutChildren(ListView.java:1673)
    at android.widget.AbsListView.onLayout(AbsListView.java:2151)
    at android.view.View.layout(View.java:15671)
    at android.view.ViewGroup.layout(ViewGroup.java:5038)
    at android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1855)
    at android.view.View.layout(View.java:15671)
    at android.view.ViewGroup.layout(ViewGroup.java:5038)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
    at android.view.View.layout(View.java:15671)
    at android.view.ViewGroup.layout(ViewGroup.java:5038)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
    at android.view.View.layout(View.java:15671)
    at android.view.ViewGroup.layout(ViewGroup.java:5038)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
    at android.view.View.layout(View.java:15671)
    at android.view.ViewGroup.layout(ViewGroup.java:5038)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
    at android.view.View.layout(View.java:15671)
    at android.view.ViewGroup.layout(ViewGroup.java:5038)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
    at android.view.View.layout(View.java:15671)
    at android.view.ViewGroup.layout(ViewGroup.java:5038)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
    at android.view.Choreographer.doCallbacks(Choreographer.java:580)
    at android.view.Choreographer.doFrame(Choreographer.java:550)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Assuming the size of the reds blues and greens arrays are consistent with the loop indexing, you need it to be 假设reds bluesgreens数组的大小与循环索引一致,则需要

for(int i = 0; i < size; ++i)

not

for(int i = 0; i <= size; ++i)

The IndexOutOfBounds error is from the last time through the loop (trying to access array[1] in an array of size = 1) IndexOutOfBounds错误是从上次循环开始(尝试访问大小为1的数组中的array [1])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM