Android 无法使用Arrayadapter为listview提供备用颜色
无法使用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-
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);
}