2013-04-11 143 views
1

我有一個json響應,我已經創建了一個適配器將json列入視圖,應用程序沒有錯誤,但它也沒有顯示結果。這裏是我的適配器類:適配器沒有顯示結果

package com.JustDine.Infrastructure; 

    import java.util.ArrayList; 
    import java.util.List; 

    import android.content.Context; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ArrayAdapter; 
    import android.widget.Filter; 
    import android.widget.ImageView; 
    import android.widget.LinearLayout; 
    import android.widget.TextView; 

    import com.JustDine.GUI.R; 
    import com.JustDine.JSON.Response.RedemptionResult; 
    import com.JustDine.JSON.Response.SearchResult; 

    public class RedemptionListAdapter extends ArrayAdapter<RedemptionResult> { 
Context context; 

private List<RedemptionResult> redemptionResultList = new ArrayList<RedemptionResult>(); 
//public ArrayList<RedemptionResult> filtered = new ArrayList<RedemptionResult>(); 
// public boolean isFiltered; 
int position; 
int textViewResourceId; 
ImageLoader imageLoader; 

public RedemptionListAdapter(Context context, int textViewResourceId, 
     List<RedemptionResult> redemptionResultList) { 
    super(context, textViewResourceId, redemptionResultList); 
    this.context = context; 
    this.redemptionResultList = redemptionResultList; 
    this.textViewResourceId = textViewResourceId; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    this.position = position; 
    LinearLayout redemptionView; 
    RedemptionResult redemptionResult = null; 

    redemptionResult = redemptionResultList.get(position); 



    if (v == null) { 
     redemptionView = new LinearLayout(getContext()); 
     LayoutInflater vi = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(textViewResourceId, redemptionView, true); 
    } 


    TextView tvName = (TextView) v.findViewById(R.id.resName); 

    tvName.setText(redemptionResult.getName()); 


    return v; 

} 
} 

請幫忙,它爲什麼不顯示結果。

更新時間:JSON響應類

package com.JustDine.JSON.Response; 

import java.util.List; 

import com.google.gson.annotations.SerializedName; 

public class RedemptionResultResponse { 

@SerializedName("Success") 
public boolean Success; 

@SerializedName("redemption_partners") 
private List<RedemptionResult> getRedemptionPartners; 

@SerializedName("denominations") 
private List<DenominationsResult> getDenominations; 

@SerializedName("errorMessage") 
public String errorMessage; 

@SerializedName("Tag") 
public String Tag; 




public List<RedemptionResult> getRedemptionPartners() { 
    return getRedemptionPartners; 
} 

public List<DenominationsResult> getDenominations() { 
    return getDenominations; 
} 

public void setRedemptionPartners(List<RedemptionResult> getRedemptionPartners) { 
    this.getRedemptionPartners = getRedemptionPartners; 
} 

public void setDenominationss(List<DenominationsResult> getDenominations) { 
    this.getDenominations = getDenominations; 
} 

    } 

package com.JustDine.JSON.Response; 

    import com.google.gson.annotations.SerializedName; 

    public class RedemptionResult { 
@SerializedName("id") 
private String id; 

@SerializedName("name") 
private String name; 


public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

}

+0

'{ 「成功」:真實, 「redemption_partners」:{ 「10013」: 「寧夏中國 - (Mirdiff,迪拜)」, }, 「面額「:[ 50,], 」的errorMessage「: 」NOERROR「, 」標籤「: 」getRedemptionData「 }'我的JSON格式.. – 2013-04-11 07:03:40

回答

0
private ArrayList<ExploreCatgModel> arrayList = new ArrayList<ExploreCatgModel>(); 
private ExploreCatgModel model; 

組數據到Model類

@Override 
     protected String doInBackground(String... params) { 
      webService = new WebService(); 
      String result = webService.aboutList(); 
      if (result != null) { 
       try { 
        JSONObject jsonObject = new JSONObject(result); 
        JSONArray jsonArray = jsonObject 
          .getJSONArray("About"); 
        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject explrObject = jsonArray.getJSONObject(i); 
         model = new ExploreCatgModel(); 
         model.setMemberID(explrObject.getString("iAboutID")); 
         model.setBuissnessName(explrObject 
           .getString("vAboutTitle")); 
         model.setBusinessDescription(explrObject 
           .getString("vAboutDescription")); 
         model.setImage1(explrObject.getString("vImage1")); 
         model.setImage2(explrObject.getString("vImage2")); 
         model.setImage3(explrObject.getString("vImage3")); 
         model.setImage4(explrObject.getString("vImage4")); 
         model.setImage5(explrObject.getString("vImage5")); 
         arrayList.add(model); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 

      return result; 
     } 

集適配器。

AboutAdapter aboutAdapter = new AboutAdapter(AboutActivity.this,arrayList); listView.setAdapter(aboutAdapter);

AboutAdapter CALSS

public class AboutAdapter extends BaseAdapter { 
     private LayoutInflater inflater; 
     private Context mcontext; 
     private ArrayList<RedemptionResult> arrayList; 

     public AboutAdapter(Context context, ArrayList<RedemptionResult> arrayList) { 
      this.mcontext = context; 
      this.arrayList= arrayList; 
      inflater = LayoutInflater.from(mcontext); 
     } 

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

     @Override 
     public Object getItem(int position) { 
      return position; 
     } 

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

     public class Holder { 
      TextView txtname; 

     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View vi = convertView; 
      Holder holder; 
      if (vi == null) { 
       vi = inflater.inflate(R.layout.raw_aboutlist, null); 
       holder = new Holder(); 

       holder.txtname = (TextView) vi 
         .findViewById(R.id.raw_about_txt_name); 


       vi.setTag(holder); 

      } else { 
       holder = (Holder) vi.getTag(); 
      } 

       holder.txtname.setText(arrayList.get(position).getName()); 

      return vi; 
     } 

    } 
+0

它是 返回類型對象拋出錯誤.. – 2013-04-11 06:31:10

+0

@Coderanonymous我編輯,現在檢查 – kyogs 2013-04-11 06:34:58

+0

它仍然說getItem()返回類型的錯誤。爲什麼? 返回類型應該是對象以外的東西。 – 2013-04-11 06:40:16

0

請試試,看看列表的大小在你的適配器的構造。它可能是一個情況下列表的大小爲0。此外,我看不出有任何使用

private List<RedemptionResult> redemptionResultList = new ArrayList<RedemptionResult>(); 

的redemptionResultList在構造函數中被設置。所以,只要將上面的行設置爲null,然後嘗試。

希望這可以幫助你。

+0

否大小不是0,I已經證實了。列表中有結果。 – 2013-04-11 06:21:28

+0

我已經發起它爲空,仍然沒有效果。 – 2013-04-11 06:47:18

+0

您粘貼的json響應沒有將redemption_partners作爲json數組。如果顯示任何json例外,請檢查日誌。另外,檢查值是否實際上在RedemptionResult集合方法中設置。 – MobDev 2013-04-11 07:12:49

0

除了代碼中可能存在的其他問題,您還需要在適配器中正確覆蓋以下方法。檢查它們是否被覆蓋。

您發佈的代碼似乎無法覆蓋它們。在litview

public int getCount(){ 
    return vector.size(); 
} 

public Object getItem(int position) { 

    return position; 
} 

public long getItemId(int position) { 

    return position; 
} 
+0

它爲返回類型對象拋出錯誤。我用long,int代替,但不能用於getItem .. – 2013-04-11 06:32:13

+0

錯誤是什麼? – 2013-04-11 06:41:31

+0

@Coder anonymous:好的,我剛剛完成了你的代碼,你已經從ArrayAdapter擴展了你的adatper,因爲你需要從BaseAdapter擴展它。那麼所有的代碼都可以。 – 2013-04-11 07:06:42