Android 无法使用Arrayadapter为listview提供备用颜色

Android 无法使用Arrayadapter为listview提供备用颜色,android,android-listview,android-arrayadapter,Android,Android Listview,Android Arrayadapter,无法使用Arrayadapter为listview提供其他颜色 这是我的日志 10-29 17:56:24.449 18093-18093/com.ambilobes.santom D/AbsListView﹕ Get MotionRecognitionManager 10-29 17:56:24.549 18093-18093/com.ambilobes.santom D/AndroidRuntime﹕ Shutting down VM 10-29 17:56:24.549 18093-

无法使用Arrayadapter为listview提供其他颜色

这是我的日志

10-29 17:56:24.449  18093-18093/com.ambilobes.santom D/AbsListView﹕ Get MotionRecognitionManager
10-29 17:56:24.549  18093-18093/com.ambilobes.santom D/AndroidRuntime﹕ Shutting down VM
10-29 17:56:24.549  18093-18093/com.ambilobes.santom W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40ff0ac8)
10-29 17:56:24.569  18093-18093/com.ambilobes.santom E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.ambilobes.santom.UserAdapter.getView(UserAdapter.java:54)
            at android.widget.AbsListView.obtainView(AbsListView.java:2619)
            at android.widget.ListView.measureHeightOfChildren(ListView.java:1253)
            at android.widget.ListView.onMeasure(ListView.java:1165)
            at android.view.View.measure(View.java:16142)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4927)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
            at android.view.View.measure(View.java:16142)
            at 
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5306)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
            at dalvik.system.NativeStart.main(Native Method)
我的代码是

    public class UserAdapter extends BaseAdapter{

        Context context;
        ArrayList<Users> userlist;
        List<Users> userlistnew = null;
        public UserAdapter(Context context,  List<Users> userlistnew){
            this.context= context;
            this.userlist = new ArrayList<Users>();
            this.userlistnew= userlistnew;
            this.userlist.addAll(userlistnew);
        }

        @Override
        public int getCount() {
            return userlistnew.size();
        }

        @Override
        public Object getItem(int position) {
            return userlistnew.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }
        class ViewHolder {
            private TextView textViewUserName;
            private TextView textViewUserId;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder viewHolder = null;

                LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.user_item,null);
                viewHolder = new ViewHolder();
                viewHolder.textViewUserName = (TextView) convertView.findViewById(R.id.txtViewUserName);
                viewHolder.textViewUserId = (TextView) convertView.findViewById(R.id.txtViewUserid);
                convertView.setTag(viewHolder);
if(position % 2 == 0){
                    convertView.setBackgroundColor(Color.GRAY);
                }
            Users user = userlistnew.get(position);
            String userName = user.getName();
            String userId = user.getId();
            viewHolder.textViewUserName.setText(userName);
            viewHolder.textViewUserId.setText(userId);
            return convertView;
        }       
    }
公共类UserAdapter扩展了BaseAdapter{
语境;
ArrayList用户列表;
List userlistnew=null;
公共UserAdapter(上下文上下文,列表userlistnew){
this.context=context;
this.userlist=new ArrayList();
this.userlistnew=userlistnew;
this.userlist.addAll(userlistnew);
}
@凌驾
public int getCount(){
返回userlistnew.size();
}
@凌驾
公共对象getItem(int位置){
返回userlistnew.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
类视图持有者{
私有文本视图文本视图用户名;
私有文本视图文本视图用户ID;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder ViewHolder=null;
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.user_项,空);
viewHolder=新的viewHolder();
viewHolder.textViewUserName=(TextView)convertView.findViewById(R.id.txtViewUserName);
viewHolder.textViewUserId=(TextView)convertView.findViewById(R.id.txtViewUserid);
convertView.setTag(viewHolder);
如果(位置%2==0){
convertView.setBackgroundColor(颜色:灰色);
}
Users user=userlistnew.get(位置);
字符串userName=user.getName();
字符串userId=user.getId();
viewHolder.textViewUserName.setText(用户名);
viewHolder.textViewUserId.setText(userId);
返回视图;
}       
}
无法找到错误。浪费了一天。。。有人能帮忙吗。我刚刚接触android。我想给我的listview添加其他颜色。

只需移动代码即可

if(position % 2 == 0){
  convertView.setBackgroundColor(Color.GRAY);
}
之后


您将convertView的背景色设置为null变量。因此它不起作用。只需更改代码的位置。请像下面这样做

 if(convertView == null){

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.user_item,null);
        viewHolder = new ViewHolder();
        viewHolder.textViewUserName = (TextView) convertView.findViewById(R.id.txtViewUserName);
        viewHolder.textViewUserId = (TextView) convertView.findViewById(R.id.txtViewUserid);
        if(position % 2 == 0){
            convertView.setBackgroundColor(Color.GRAY);
        }
        convertView.setTag(viewHolder);

您可以尝试以下代码:

if (position % 2 == 1) {

    view.setBackgroundColor(Color.RED);  
} else {
    view.setBackgroundColor(Color.GREEN);  
}
您可以在重写arrayadapter时看到这一点


如果(位置%2==0){convertview.setBackgroundColor(Color.GRAY);}我将此条件放在(convertview==null)的其他部分,希望它能帮助您

共享解决方案会有帮助。您应该将其作为答案而不是注释发布。我给您正确的答案。请把它们看作是正确的。用正确的答案编辑我的问题…谢谢大家的回答。
if (position % 2 == 1) {

    view.setBackgroundColor(Color.RED);  
} else {
    view.setBackgroundColor(Color.GREEN);  
}