나는 안드로이드 응용 프로그램을 만들려고 노력하지만 제목이 없습니다. 내 첫 번째 목표는 TextView에서 json의 한 문자를 표시하는 것입니다. 그 후 버튼을 클릭하면 다음 캐릭터로 가고 싶습니다. 코드는 학교 프로젝트 용입니다. 나는 몇 시간 동안 잘못되었지만 오류를 발견 할 수 없다. 나는 많은 stackoverflow 질문과 대답을 읽었지만 대답은 모든 코드 조각에 대해 정교하다.org.json.JSONException : 데이터에 대한 값이 없습니다
package com.example.pirama3.pirama3;
import android.content.res.Resources;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.ScaleGestureDetector;
import android.view.View;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MainActivity extends AppCompatActivity {
public List<String> list =new ArrayList<String>();
public String[] ls= new String[3998];
public void loadGrades(View view){
Resources res = getResources();
InputStream is = res.openRawResource(R.raw.test02);
Scanner scanner = new Scanner(is);
StringBuilder builder = new StringBuilder();
while(scanner.hasNextLine()){
builder.append(scanner.nextLine());
}
parseJson(builder.toString());
}
private void parseJson(String s) {
TextView txt = (TextView) findViewById(R.id.abc);
StringBuilder builder = new StringBuilder();
try{
JSONObject root = new JSONObject(s);
JSONArray dt = root.getJSONArray("data");
for(int i=0;i<3999;i++){
JSONObject chara = dt.getJSONObject(i);
Log.d("aaa",chara.getString("character"));
ls[i]=chara.optString("character");
}
}catch (JSONException e){
e.printStackTrace();
}
//Log.d("abcc",list.get(0));
//txt.setText(s);
txt.setText(ls[1]);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView txt = (TextView) findViewById(R.id.abc);
//Log.d("abcc",list.get(0));
//System.out.println(list.get(0));Resources res = getResources();
Resources res = getResources();
InputStream is = res.openRawResource(R.raw.test02);
Scanner scanner = new Scanner(is);
StringBuilder builder = new StringBuilder();
while(scanner.hasNextLine()){
builder.append(scanner.nextLine());
}
try {
JSONObject root = new JSONObject(builder.toString());
JSONArray dt = root.getJSONArray("data");
//ls = new String[dt.length()];
}catch (JSONException ab){
ab.printStackTrace();
}
txt.setText(ls[1]);
}
}
내 JSON 파일은이 내가 여기있는 모든 코딩을하지 않을 숙제이기 때문에이 내 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.pirama3.pirama3.MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="loadGrades"
android:text="@string/button_load_grades"/>
<TextView
android:id="@+id/abc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="20dp"
android:text="@string/text_student_info" />
</LinearLayout>
정말 목록에 3998 개의 요소가 있습니까? 아니면 배열에 충분한 공간을 확보하려고하십니까? – Barns
여기에 json 응답을 추가하십시오. –
정말 내 목록에 3999 개의 요소가 있습니다. –