我对json的反应越来越好,但我无法将其添加到我的模型类
我的片段类
public class Premiums extends Fragment {
private RecyclerView recyclerPremium;
private RecyclerView.LayoutManager mLayoutManager;
private List<PremiumDetails> premiumDetailslist = new ArrayList<>();
private PremiumAdapter premiumAdapter;
private PremiumDetails premiumDetails;
private JSONObject jsonobject;
private Context context;
public Premiums() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View mainView = inflater.inflate(R.layout.premium_fragment, container, false);
recyclerPremium = (RecyclerView) mainView.findViewById(R.id.recycler_premium);
mLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
recyclerPremium.setLayoutManager(mLayoutManager);
recyclerPremium.setHasFixedSize(true);
context = getContext();
// premiumAdd();
data();
premiumAdapter = new PremiumAdapter(context, premiumDetailslist);
recyclerPremium.setAdapter(premiumAdapter);
return mainView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private void premiumAdd() {
PremiumRequestHandler premiumHandler = new PremiumRequestHandler("premiumADD");
premiumHandler.executeAsStringRequest(new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("response", response);
JSONArray jsonarray = null;
try {
jsonarray = new JSONArray(response);
} catch (JSONException e) {
e.printStackTrace();
}
for (int i = 0; i < jsonarray.length(); i++) {
try {
jsonobject = jsonarray.getJSONObject(i);
// Log.e("id", String.valueOf(jsonobject.getInt("id")));
premiumDetails = new PremiumDetails(jsonobject.getInt("id"),
jsonobject.getInt("userid"),
jsonobject.getInt("mobile"),
jsonobject.getInt("cityid"),
jsonobject.getInt("price"),
jsonobject.getInt("comments"),
jsonobject.getInt("created"),
jsonobject.getInt("categoryid"),
jsonobject.getInt("MainCategoryID"),
jsonobject.getInt("views"),
jsonobject.getInt("ImageCount"),
jsonobject.getInt("storeid"),
jsonobject.getString("title"),
jsonobject.getString("default_photo"),
jsonobject.getString("CityName"),
jsonobject.getString("CategoryName"),
jsonobject.getString("currency"),
jsonobject.getString("description"));
premiumDetailslist.add(premiumDetails)
} catch (JSONException e) {
e.printStackTrace();
}
}
premiumAdapter.setPremiumDetails(premiumDetailslist);
}
}, new BaseRequest.ErrorResponseCallback() {
@Override
public void onError(Exception exception) {
}
});
}
private void data() {
PremiumDetails featuredDetails = new PremiumDetails(1, 2, 98555555, 15, 156, 1456789, 2, 2, 45, 78, 24, 5,
"الدول العربية الواقعة في المشرق العربي في جنوب", "https://cdn.bezaat.com/th100x100_1471645516-71.jpeg", " احتلت أراضيه وذلك", "hell",
"gragyt", "الشمال البحر الأسود وجورجيا ومن الشرق أرمينيا وإيران ومن الجنوب العراق وسوريا والبحر المتوسط مع حدود بحرية مع قبرص، ومن الغرب بحر إيجة واليونان وبلغاريا. هي عضو في منظمة التعاون الاقتصادي للبحر الأسود. تركيا دولة علمانية ديمقراطية، وحدوية، جمهورية دستورية ذات تراث ثقافي قديم. أصبحت تركيا متكاملة على نحو متزايد مع الغرب من خلال عضويتها في منظمات مثل مجلس أوروبا وحلف شمال الأطلسي، وغيره. وقد عززت تركيا أيضًا علاقات ثقافية وثيق"
);
premiumDetailslist.add(featuredDetails);
featuredDetails = new PremiumDetails(2, 2, 98555555, 15, 156, 1456789, 2, 2, 45, 78, 24, 5,
"الدول العربية الواقعة في المشرق العربي في جنوب", "https://cdn.bezaat.com/th100x100_1471645516-71.jpeg", " احتلت أراضيه وذلك", "hell",
"gragyt", "الشمال البحر الأسود وجورجيا ومن الشرق أرمينيا وإيران ومن الجنوب العراق وسوريا والبحر المتوسط مع حدود بحرية مع قبرص، ومن الغرب بحر إيجة واليونان وبلغاريا. هي عضو في منظمة التعاون الاقتصادي للبحر الأسود. تركيا دولة علمانية ديمقراطية، وحدوية، جمهورية دستورية ذات تراث ثقافي قديم. أصبحت تركيا متكاملة على نحو متزايد مع الغرب من خلال عضويتها في منظمات مثل مجلس أوروبا وحلف شمال الأطلسي، وغيره. وقد عززت تركيا أيضًا علاقات ثقافية وثيق"
);
premiumDetailslist.add(featuredDetails);
featuredDetails = new PremiumDetails(3, 2, 98555555, 15, 156, 1456789, 2, 2, 45, 78, 24, 5,
"الدول العربية الواقعة في المشرق العربي في جنوب", "https://cdn.bezaat.com/th100x100_1471645516-71.jpeg", " احتلت أراضيه وذلك", "hell",
"gragyt", "الشمال البحر الأسود وجورجيا ومن الشرق أرمينيا وإيران ومن الجنوب العراق وسوريا والبحر المتوسط مع حدود بحرية مع قبرص، ومن الغرب بحر إيجة واليونان وبلغاريا. هي عضو في منظمة التعاون الاقتصادي للبحر الأسود. تركيا دولة علمانية ديمقراطية، وحدوية، جمهورية دستورية ذات تراث ثقافي قديم. أصبحت تركيا متكاملة على نحو متزايد مع الغرب من خلال عضويتها في منظمات مثل مجلس أوروبا وحلف شمال الأطلسي، وغيره. وقد عززت تركيا أيضًا علاقات ثقافية وثيق"
);
premiumDetailslist.add(featuredDetails);}}
我的适配器类
public class PremiumAdapter extends RecyclerView.Adapter<PremiumAdapter.MyViewHolderPremium> {
private List<PremiumDetails> premiumDetailsList;
private ImageLoader imageLoader;
private Context context;
public PremiumAdapter(Context context, List<PremiumDetails> premiumDetailsList) {
this.premiumDetailsList = premiumDetailsList;
this.context = context;
notifyDataSetChanged();
}
public void setPremiumDetails(List<PremiumDetails> premiumDetailsList) {
this.premiumDetailsList = premiumDetailsList;
notifyDataSetChanged();
}
public class MyViewHolderPremium extends RecyclerView.ViewHolder {
private TextView txtTitle,txtDescription,txtCityName,txtPrice,txtCategory,txtHour,txtPhotoNo;
private NetworkImageView imgPhoto;
public MyViewHolderPremium(View itemView) {
super(itemView);
txtTitle = (TextView)itemView.findViewById(R.id.txt_title_fad);
txtDescription = (TextView)itemView.findViewById(R.id.description_fad);
txtCityName = (TextView)itemView.findViewById(R.id.city_name_fad);
txtPrice = (TextView)itemView.findViewById(R.id.price_fad);
txtCategory = (TextView)itemView.findViewById(R.id.category_fad);
txtHour = (TextView)itemView.findViewById(R.id.hours_fad);
txtPhotoNo = (TextView)itemView.findViewById(R.id.txt_photo_no_fad);
imgPhoto=(NetworkImageView)itemView.findViewById(R.id.img_photo_lod_fad);
}
}
@Override
public MyViewHolderPremium onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.featured_ad_adapter_layout,parent,false);
final MyViewHolderPremium myViewHolderPremium = new MyViewHolderPremium(itemView);
return myViewHolderPremium;
}
@Override
public void onBindViewHolder(MyViewHolderPremium holder, int position) {
PremiumDetails premiumDetails = premiumDetailsList.get(position);
holder.txtTitle.setText(premiumDetails.getTitle());
holder.txtDescription.setText(premiumDetails.getDescription());
holder.txtCityName.setText(premiumDetails.getCityName());
holder.txtPrice.setText(Integer.toString(premiumDetails.getPrice()));
holder.txtCategory.setText(premiumDetails.getCategoryName());
holder.txtHour.setText(Integer.toString(premiumDetails.getCreated()));
holder.txtPhotoNo.setText(Integer.toString(premiumDetails.getImageCount())+" photos " );
try {
imageLoader= VolleyHandler.getImageLoader();
} catch (Exception e) {
e.printStackTrace();
}
//imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
//imageLoader.get(featuredAddDetails.getDefault_photo(), ImageLoader.getImageListener(holder.imgPhoto, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));
holder.imgPhoto.setImageUrl(premiumDetails.getDefault_photo(),imageLoader);
}
@Override
public int getItemCount() {
Log.e("size", String.valueOf(premiumDetailsList.size()));
return premiumDetailsList.size();
}}
但是当我尝试通过数据方法添加时,它会进入我的回收器,否则它会将适配器中的getitemcount变为零 json的反应越来越快,PLZ帮帮我
我的Json回复
[{"id":15105820,"userid":2469720,"mobile":"01222303389","title":"\u0645\u0637\u0644\u0648\u0628 \u0634\u064a\u0641 \u0645\u0634\u0627\u0648\u064a \u0648 \u062c\u0632\u0627\u0631 ","default_photo":"","CityName":"\u0627\u0644\u0642\u0627\u0647\u0631\u0629","CategoryName":"\u0641\u0646\u062f\u0642\u0629 \u0648\u0645\u0637\u0627\u0639\u0645","cityid":37,"storeid":null,"price":0,"currency":"\u062c\u0646\u064a\u0647","comments":1,"created":"1473429996","categoryid":448,"MainCategoryID":80,"description":"\u0645\u0637\u0644\u0648\u0628 \u0644\u0644\u0639\u0645\u0644 \u0628\u0634\u0631\u0643\u0629 \u0645\u0627\u0644\u0643\u0647 \u0644\u0639\u062f\u0629 \u0645\u0637\u0627\u0639\u0645 \u0643\u0628\u0631\u064a\r\n- \u0634\u064a\u0641 \u0645\u0634\u0627\u0648\u064a \u0648 \u062c\u0632\u0627\u0631\u0647 \r\n\u0634\u0631\u0637 \u0623\u0633\u0627\u0633\u064a: \u064a\u0634\u062a\u0631\u0637\u00a0\u0627\u0644\u062e\u0628\u0631\u0629 \u0641\u064a \u0645\u062c\u0627\u0644 \u0627\u0644\u0645\u0637\u0627\u0639\u0645 \u0627\u0648 \u0627\u0644\u0641\u0646\u0627\u062f\u0642\r\n\u0627\u0644\u0631\u062c\u0627\u0621 \u0623\u0631\u0633\u0627\u0644 \u0627\u0644\u0633\u064a\u0631\u0629 \u0627\u0644\u062f\u0627\u062a\u064a\u0629 \u0639\u0644\u064a \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a: fb.restaurant@outlook.com\r\n ","views":9292,"ImageCount":0},]
答案 0 :(得分:0)
添加premiumAdapter.setPremiumDetails(premiumDetailslist);
后,您需要致电premiumAdapter.notifyDataSetChanged
答案 1 :(得分:0)
您的JSON包含一些空响应。删除那些空值。 在将其设置为 PremiumDetails 之前,POJO会检查对象值是否为null(如果为null),则在解析时设置任何默认值。例如
if(jsonobject.getString("title").equals(null)){
// set any default value
}else{
// set the value from json response
}
注意:确保在解析时不包含任何空记录会破坏流程并发生切除。很高兴帮忙......