JSON 데이터를 어댑터와 함께 listview에 전달하려고합니다.null 객체 참조에 가상 메소드 'void android.widget.ListView.setAdapter (android.widget.ListAdapter)'를 호출하려고합니다. 치명적인 오류
package ir.homa;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by SMQ on 9/17/2016.
*/
public class RoomTypeAdapter extends ArrayAdapter<RoomType> {
public RoomTypeAdapter(Context context, ArrayList<RoomType> roomType) {
super(context,0, roomType);
}
@Override
public View getView(int position , View ConvertView, ViewGroup parent){
RoomType roomType = getItem(position);
if (ConvertView == null) {
ConvertView = LayoutInflater.from(getContext()).inflate(R.layout.item_type, parent, false);
}
TextView typeItem = (TextView) ConvertView.findViewById(R.id.itemRoomType);
typeItem.setText(roomType.RoomType);
return ConvertView;
}
}
이 변수가 포함되어 내 클래스 :이 내 어댑터입니다
09-18 17:03:46.787 6429-6429/ir.homa E/AndroidRuntime: FATAL EXCEPTION: main
Process: ir.homa, PID: 6429
java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.homa/ir.homa.HotelDetail}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
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:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at ir.homa.HotelDetail.onCreate(HotelDetail.java:43)
at android.app.Activity.performCreate(Activity.java:5937)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
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:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
: 지금은 로그 캣에 오류가있어
package ir.homa;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Created by SMQ on 9/17/2016.
*/
public class RoomType {
String RoomType;
String id;
public void setRoomType(JSONObject object) {
try {
this.RoomType = object.getString("description");
this.id = object.getString("id");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
을이 내 MainActivity입니다 :
package ir.homa;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonObjectRequest;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* Created by SMQ on 9/4/2016.
*/
public class HotelDetail extends Activity {
// json array response url
private String urlJsonArry = "http://homa.qadamgahi.ir/bandar_result.json";
private static String TAG = HotelDetail.class.getSimpleName();
ArrayList<RoomType> typeList;
RoomTypeAdapter adapter;
ListView listView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
typeList = new ArrayList<>();
adapter = new RoomTypeAdapter(this, typeList);
listView = (ListView) findViewById(R.id.listv);
listView.setAdapter(adapter);
makeJsonObjectRequest();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
/*
ATTENTION: This was auto-generated to implement the App Indexing API.
See https://g.co/AppIndexing/AndroidStudio for more information.
*/
GoogleApiClient client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
/**
* Method to make json object request where json response starts wtih {
* */
private void makeJsonObjectRequest() {
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
urlJsonArry, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
// Parsing json object response
// response will be a json object
RoomType o = new RoomType();
try {
for (int i = 0 ; i < typeList.size() ; i++)
{
RoomType add = new RoomType();
add.id = response.getString("id");
add.RoomType = response.getString("description");
typeList.add(add);
}
adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
// hide the progress dialog
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq);
}
}
표시 방법 json 데이터에 listview를 채울 수 있습니까?이 문제는 무엇입니까?
, 당신이 당신이 당신의보기를 초기화하지 않은 당신이하려고하는 중 하나를 의미하는'NullPointerException'입니다 어댑터 – Prashant
을 설정하는 우편 번호 데이터를 채 웁니다. 또는 그보기가 레이아웃 XML 파일 내에 존재하지 않습니다. 또는 철자가 틀렸을 수도 있습니다. – Prashant
죄송합니다 ... 내 MainActivity를 추가했습니다. – Mohammadreza