[英]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
blues
和greens
数组的大小与循环索引一致,则需要
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.