2016-12-30 1 views
0

이 질문은 이전에 질문되었습니다. 죄송합니다. Android를 처음 접했을 때 그 답변이 도움이되지 않았습니다.List <Map <String, List <>>> BaseAdapter, Android

다음 json을 개장, Android를 사용하여 구문 분석하려고합니다. 아래의 json에서 객체 및 은 동적 인입니다. 그래서 Map을 사용하여 데이터를 얻습니다.

{ 
"effect_list":[ 
    { 
    "4":[ 
     { 
      "effects_id":"18", 
      "effects_name":"Band 1" 
     }, 
     { 
      "effects_id":"19", 
      "effects_name":"Band 2" 
     } 
    ], 
    "1":[ 
     { 
      "effects_id":"1", 
      "effects_name":"Background Blur" 
     }, 
     { 
      "effects_id":"4", 
      "effects_name":"Blemish Removal" 
     } 
    ] 
    } 
] 
} 

는 지금은 BaseAdapter를 사용하여 목록보기 내에서 JSON 데이터를 표시 할.

은 내가 런타임 중에 다음과 같은 오류를 얻고있다

MyContactAdapter2.java

public class MyContactAdapter2 extends BaseAdapter { 
    List<Map<String, List<EffectList>>> contactList; 
    Context context; 
    private LayoutInflater mInflater; 

    // Constructors 
    public MyContactAdapter2(Context context, List<Map<String, List<EffectList>>> objects) { 

     this.context = context; 
     this.mInflater = LayoutInflater.from(context); 
     contactList = objects; 
    } 

    @Override 
    public int getCount() { 
     return contactList.size(); 
    } 

    @Override 
    public EffectList getItem(int position) { 
     return (EffectList) contactList.get(position); <----- ERROR HERE DURING RUNTIME 
    } 


    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final MyContactAdapter2.ViewHolder vh; 
     if (convertView == null) { 
      View view = mInflater.inflate(R.layout.get_layout_row_view, parent, false); 
      vh = MyContactAdapter2.ViewHolder.create((RelativeLayout) view); 
      view.setTag(vh); 
     } else { 
      vh = (MyContactAdapter2.ViewHolder) convertView.getTag(); 
     } 

     EffectList item = getItem(position); <----- ERROR HERE DURING RUNTIME 


     vh.textViewName.setText(item.getEffectsId()); 
     vh.textViewEmail.setText(item.getEffectsName()); 

     return vh.rootView; 
    } 

    private static class ViewHolder { 
     public final RelativeLayout rootView; 
     public final ImageView imageView; 
     public final TextView textViewName; 
     public final TextView textViewEmail; 

     private ViewHolder(RelativeLayout rootView, ImageView imageView, TextView textViewName, TextView textViewEmail) { 
      this.rootView = rootView; 
      this.imageView = imageView; 
      this.textViewName = textViewName; 
      this.textViewEmail = textViewEmail; 
     } 

     public static MyContactAdapter2.ViewHolder create(RelativeLayout rootView) { 
      ImageView imageView = (ImageView) rootView.findViewById(R.id.imageView); 
      TextView textViewName = (TextView) rootView.findViewById(R.id.textViewName); 
      TextView textViewEmail = (TextView) rootView.findViewById(R.id.textViewEmail); 
      return new MyContactAdapter2.ViewHolder(rootView, imageView, textViewName, textViewEmail); 
     } 
    } 
} 

을 시도했다.

java.lang.ClassCastException가 : 내 수업에 com.google.gson.internal.LinkedTreeMap 캐스팅 할 수없는

은 내가 잘못 여기서 뭐하는 거지? contactList 항목으로지도가 포함되어 있기 때문에 getItem 방법에서

답변

1

돌아 Map<String,List<EffectList>> :

@Override 
    public Map<String,List<EffectList>> getItem(int position) { 
     return contactList.get(position); 
    } 

그리고 getView 사용 키에

지도에서 값에 액세스하려면 다음의 응답을

Map<String,List<EffectList>> map=getItem(position); 
    List<EffectList> effectList = map.get("KEY_NAME"); 
    // get item from effectList using for loop 
+0

감사합니다. – Jayaprakash

+0

응답에 대해 고마워. 다음 오류가 발생했습니다. 호환되지 않는 유형. 필수 : ​​com.example.prakash.pix91.get.Templates.pixjson.EffectList 발견 : java.util.Map > in ** EffectList item = getItem (position); ** – Jayaprakash

관련 문제