2017-02-20 7 views
1

내 GlobalClass extends 응용 프로그램 클래스가 있습니다. 전역 개체 데이터를 회 전자에 바인딩하고 싶습니다. 여기 내 GlobalClass글로벌 개체에서 스피너로 데이터를 적용하는 방법

public class GlobalClass extends Application { 

private List<ProjectType> projectTypes; 

public List<ProjectType> getProjectTypes() { 
    return projectTypes; 
} 

public void setProjectTypes(List<ProjectType> projectTypes) { 
    this.projectTypes = projectTypes; 
} 
} 

뽀조 클래스

public class ProjectType implements Serializable { 
private Integer projectTypeId; 
private String typeName; 
private Integer peckOrder; 

//getter and setter here 

내가 발리를 사용하여 서버의 응답을 얻을 GSON를 사용하여 분석하고 여기에 GlobalClass 코드에 대한 응답을 설정

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, getString(R.string.TEST_projectTypeURL), null, new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 
      final GlobalClass globalVariable = (GlobalClass) getApplicationContext(); 
      Gson gson = new Gson(); 
      List<ProjectType> projectTypes = gson.fromJson(String.valueOf(response),List.class); 
      globalVariable.setProjectTypes(projectTypes); 
     } 
    } 

그리고 마지막으로 내가 오류를 얻고있다 위의 코드를 시도하는 동안 GlobalClass 객체

globalVariable = (GlobalClass) getApplicationContext(); 
    List<String> projectTypeList = new ArrayList<>(); 

    ArrayList<ProjectType> projectTypesCollection = new ArrayList<ProjectType>(globalVariable.getProjectTypes()); 

    for (ProjectType projectType: projectTypesCollection) { 

     projectTypeList.add(projectType.getTypeName()); 
    } 

    prjtTypeSpinner = (Spinner)findViewById(R.id.spn_prjt_type); 
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item,projectTypeList); 
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    prjtTypeSpinner.setAdapter(dataAdapter); 

에서 데이터를 바인딩하는 스피너를 사용하여 다른 활동 클래스 스피에서 "com.google.gson.internal.LinkedTreeMap는 캐스트 할 수없는 pojo.ProjectType 클래스 "여기

객체 반환 값,

[{projectTypeId=3.0, typeName=ALS, peckOrder=220.0}, {projectTypeId=2.0, typeName=ALB, peckOrder=210.0}, {projectTypeId=1.0, typeName=CL, peckOrder=200.0}, {projectTypeId=7.0, typeName=ACG, peckOrder=40.0}, {projectTypeId=6.0, typeName=ACS, peckOrder=30.0}, {projectTypeId=5.0, typeName=ACB, peckOrder=20.0}, {projectTypeId=4.0, typeName=CC, peckOrder=10.0}] 

내가을 원하는 회 전자에. 미리 감사드립니다.

답변

1

,

Arrays.asList(gson.fromJson(response, ProjectType[].class)) 

내가 시도 내 오류가 해결 된 코드,이 코드는 잘 작동

0

난 당신이 코드에 문제가 있다고 생각

당신이 변경해야
List<ProjectType> projectTypes = gson.fromJson(String.valueOf(response),List.class); 

:

List<ProjectType> projectTypes = gson.fromJson(new Gson().toJson(response),new TypeToken<List<ProjectType>>() { 
      }.getType()); 
드디어이 문제를 해결
+0

코드를 사용하는 동안 오류가있는 "java.lang.IllegalStateException : Expected BEGIN_ARRAY but BEGIN_OBJECT"오류가 발생합니다. – Narendhran