我是android開發的新手。我在android studio
工作。我在我的assets
文件夾中放置了一些json
文件。現在我想將json文件中的數據填充到微調器中。我知道如何使用微調器並使用web service
來填充數據,但我不知道如何使用json
文件來完成。此外,我找不到任何教程,但是,我確實發現how to read data from json file,但我想在微調框中填充它。以下是我的json
文件數據之一。使用json文件填充微調器而不使用web服務
ref.json
{"reference":
[
{"ref_no":"11111111111111","Name":"Faisal"},
{"ref_no":"22222222222222","Name":"Salman"},
{"ref_no":"33333333333333","Name":"Asim"},
{"ref_no":"44444444444444","Name":"Asad"},
{"ref_no":"55555555555555","Name":"Mateen"},
{"ref_no":"66666666666666","Name":"Omar"},
{"ref_no":"77777777777777","Name":"Usama"}
]}
下面是我爲spinner
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dd_ref"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
我想從JSON文件ref_no
,並顯示他們進入微調佈局。
更新1
閱讀中,我也做了解答和建議後,以下
ArrayList<String> refList;
public static final String LOG_TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
loadData();
} catch (JSONException e) {
e.printStackTrace();
}
}
public void loadData() throws JSONException {
JSONArray jsonArray;
JSONObject jobj;
try
{
jobj = new JSONObject(loadJSONFromAssest());
jsonArray = jobj.getJSONArray("reference");
for(int i = 0; i<jsonArray.length();i++)
{
jobj = jsonArray.getJSONObject(i);
Log.d("Details-->", jobj.getString("ref_no"));
String ref = jobj.getString("ref_no");
refList.add(ref);
}
} catch (JSONException e)
{
e.printStackTrace();
}
dd_ref.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, refList));
dd_ref.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
refr_no = String.valueOf(refList.get(position));
Log.i(LOG_TAG,refr_no);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public String loadJSONFromAssest() {
String json = " ";
try{
InputStream is = getAssets().open("ref.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
return null;
}
return json;
}
當我運行該應用程序,我碰到下面的錯誤
FATAL EXCEPTION: main
Process: com.example.accurat.application, PID: 7336
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.accurat.application/com.example.accurat.application.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2442)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2506)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5491)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
at com.example.accurat.application.MainActivity.loadData(MainActivity.java:59)
at com.example.accurat.application.MainActivity.onCreate(MainActivity.java:37)
at android.app.Activity.performCreate(Activity.java:6270)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2395)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2506)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5491)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
下面是我的調試圖像
錯誤在refList.add(ref);
,因爲它告訴refList
爲空。
我堅持它,不知道該怎麼做。
任何幫助將不勝感激。
檢查一下http://www.androidbegin。com/tutorial/android-populating-spinner-json-tutorial/ –
[Android Java;我怎樣才能解析一個本地JSON文件從資產文件夾到ListView](http://stackoverflow.com/questions/19945411/android-java-how-can-i-parse-a-local-json-file-from- assets-folder-into-a-listvi) –
@ Skizo-ozᴉʞS感謝您的評論,但它使用了一個URL,我不想使用web服務,我只想使用我的本地json文件。 – faisal1208