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;
}

}

4

3 に答える 3

0

コードに存在する可能性のある他の問題に加えて、アダプターで次のメソッドを正しくオーバーライドする必要があります。それらがオーバーライドされていないかどうかを確認してください。

あなたが投稿したコードはそれらを上書きしていないようです。

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

public Object getItem(int position) {

    return position;
}

public long getItemId(int position) {

    return position;
}
于 2013-04-11T06:25:04.140 に答える
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;
        }

litviewにアダプターをセット。

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

アダプタの呼び出しについて

 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;
        }

    }
于 2013-04-11T06:25:14.217 に答える
0

アダプターのコンストラクターでリストのサイズを確認してください。リストのサイズが 0 の場合もあるかもしれません。

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

redemptionResultList はコンストラクターで設定されています。したがって、上記の行を null にしてから試してください。

これがお役に立てば幸いです。

于 2013-04-11T06:20:20.093 に答える