alPlayerRoles.addAll(responseModel.getData().prModel);
playerAdapter = new PlayerDetailsAdapter(PlayerDetailsActivity.this, alPlayerRoles);
lvPlayerRoles.setAdapter(playerAdapter);
這是我的主線程的代碼,我使用初始化適配器和由我創建了一個模型添加包含對象的ArrayList把它放在一個ListView 。顯示java.lang.NullPointerException Adapter.getView錯誤
alPlayerRoles
是作爲數據傳遞給適配器初始化的ArrayList,它具有所有正確的值。用調試器檢查它。
這裏就是整個適配器類太:
private Activity activity;
public ArrayList<PlayerRolesModel> playerDetails = new ArrayList<>();
Context context;
private LayoutInflater mInflater;
public PlayerDetailsAdapter(Activity activity, ArrayList<PlayerRolesModel> playerDetails) {
super(activity, 0, playerDetails);
this.playerDetails = playerDetails;
this.activity = activity;
}
@Override
public PlayerRolesModel getItem(int position) {
return playerDetails.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
if (convertView == null) {
View view = mInflater.inflate(R.layout.player_details_row, parent, false);
vh = ViewHolder.create((RelativeLayout) view);
view.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
PlayerRolesModel item = getItem(position);
PlayerRolesModelTeam team = item.prmTeam;
vh.tvRoleSeason.setText(item.startDate.substring(0,3) + "-" + item.endDate.substring(0,3));
vh.tvRoleTeam.setText(team.prmTeamName);
vh.tvRoleContractType.setText(item.Type);
vh.ivTeamLogoImage.setImageResource(R.drawable.ic_launcher);
return vh.rootView;
}
private static class ViewHolder {
public final RelativeLayout rootView;
public final TextView tvRoleSeason;
public final TextView tvRoleTeam;
public final TextView tvRoleContractType;
public final ImageView ivTeamLogoImage;
private ViewHolder(RelativeLayout rootView, TextView tvRoleSeason, TextView tvRoleTeam, TextView tvRoleContractType, ImageView ivTeamLogoImage) {
this.rootView = rootView;
this.tvRoleSeason = tvRoleSeason;
this.tvRoleTeam =tvRoleTeam;
this.tvRoleContractType = tvRoleContractType;
this.ivTeamLogoImage = ivTeamLogoImage;
}
public static ViewHolder create(RelativeLayout rootView) {
TextView tvRoleSeason = (TextView) rootView.findViewById(R.id.tvRoleSeason);
TextView tvRoleTeam = (TextView) rootView.findViewById(R.id.tvRoleTeam);
TextView tvRoleContractType = (TextView) rootView.findViewById(R.id.tvRoleContractType);
ImageView ivTeamLogoImage = (ImageView) rootView.findViewById(R.id.ivTeamLogoImage);
return new ViewHolder(rootView, tvRoleSeason, tvRoleTeam, tvRoleContractType, ivTeamLogoImage);
}
}
我之前已經多次使用了相同的模板適配器,它總是工作,沒有什麼問題,但是這一次我發現了上面提到的錯誤。這是否意味着數據以某種方式作爲空ArrayList傳遞,或者其他東西沒有正確初始化?
編輯:堆棧跟蹤
FATAL EXCEPTION: main
Process: bahisadam.com.bahisadam, PID: 21210
java.lang.NullPointerException
at com.bahisadam.view.PlayerDetailsActivity$1.onResponse(PlayerDetailsActivity.java:155)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5124)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:613)
at dalvik.system.NativeStart.main(Native Method)
你應該a)添加堆棧跟蹤和b)確切地告訴你在哪一行出現錯誤。 – SJuan76
嘗試在getView'View view = convertView'然後if(view == null){'then'view = mInflater ....'和'view.getTag()'也返回'view' – Raghunandan
我已經擁有了所有在getView方法中設置 – user1938007