目前我想填充我的自定義列表視圖用JSON自定義列表視圖適配器尺寸空
它正常工作與虛擬數據,和我的JSON請求是罰款。
所有這些代碼都在onCreate視圖中,我知道我們應該使用異步任務或某種排序來產生一個新的線程來提取數據,但是我只想把它放在這裏用於測試目的,所以我知道我可以拉數據第一。
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new BasicAuthInterceptor()).addNetworkInterceptor(new StethoInterceptor()).build();
String url = "http://10.0.2.2:3000/response";
Request request = new Request.Builder().url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i(TAG, "call api error");
Log.e("Volley", e.toString());
}
@Override
public void onResponse(Call call, okhttp3.Response response) {
try {
if (!response.isSuccessful())
throw new IOException("Unexpected code " + response);
final String body = response.body().string();
JSONObject Jobject = new JSONObject(body);
JSONArray Jarray = Jobject.getJSONArray("inboxMsgList");
Log.e("Array", String.valueOf(Jarray.length()));
//Initializing my ArrayLis here I already defined it where I have my other variables defined.
arrMessageData = new ArrayList<>();
JSONObject object = Jarray.getJSONObject(0);
MessageData msg3 = new MessageData();
msg3.setName((String) object.get("fromUser"));
msg3.setMessage((String) object.get("message"));
msg3.setImage(R.drawable.msgone);
msg3.setRead(true);
msg3.setSubject((String) object.get("subject"));
arrMessageData.add(msg3);
Log.e("DetailObject", msg3.getName());
// Log.e("FullJsonReply", body.toString());
} catch (Exception e){
Log.e("Volley2", e.toString());
}
}
});
adapter = new CustomAdapterReferral(getActivity().getBaseContext(), arrMessageData);
usersListView.setAdapter(adapter);
我得到的錯誤是:
顯示java.lang.NullPointerException:嘗試在玉米上的空對象引用 調用虛擬方法 'INT java.util.ArrayList.size()' .adilpatel.vitalengine.ListAdapters.CustomAdapterReferral.getCount(CustomAdapterReferral.java:40)
第40行是我getCount將在我的適配器
public int getCount() {
return arrMessageData.size();
}
我把它返回的大小
貌似大小爲1,但它仍然給空指針異常一個破發點的權利。是否因爲適配器爲空?什麼是適配器?
編輯:這是我的CustomAdapterReferral:
public class CustomAdapterReferral extends BaseAdapter {
ArrayList<MessageData> arrMessageData;
Context context;
private static LayoutInflater inflater = null;
public CustomAdapterReferral(Context mainActivity, ArrayList<MessageData> arrMessageData){
this.arrMessageData = arrMessageData;
context = mainActivity;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return arrMessageData.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public class ViewHolder {
TextView referralName;
ImageView referralImage;
TextView referralMessage;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder=new ViewHolder();
View rootView = inflater.inflate(R.layout.list_item_referral, null);
holder.referralName = (TextView) rootView.findViewById(R.id.referralName);
holder.referralImage =(ImageView) rootView.findViewById(R.id.referralImage);
holder.referralMessage= (TextView) rootView.findViewById(R.id.referralMessage);
holder.referralMessage.setText("" + arrMessageData.get(position).getMessage());
holder.referralName.setText("" + arrMessageData.get(position).getName());
holder.referralImage.setImageResource(arrMessageData.get(position).getImage());
return rootView;
}
}
你能編輯你的問題來顯示「CustomAdapterReferral」類嗎? – Bill
@quidproquo更新 – Adilp