我是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