آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

دریافت اطلاعات از سرور با جیسون ( مشکل رفرش)

مرتضی مرادی  10 سال پیش  10 سال پیش
0 0

با سلام دوستان

من با این کد ها و استفاده از کتابخانه volley از یک فایل رابط php اطلاعات رو تحت جیسون میگیرم و در یک لیست ویو نشون میدم اما مشکلی که هست اینکه : دفعه اول که اطلاعات رو میگیرم و در لیست نشون داده میده اما وقتی یه اطلاعات جدید تو دیتابیس سرور وارد میکنم و برنامه رو اجرا میکنم دیگه اون اطلاعات نشون داده نمیشه یعنی وقتی اسکرول میکنم به پایین تنها همون اطلاعاتی که قبلا و دفعه اول گرفته بودم  نشون داده میشه ، لطفا راهنمایی فرمایید با تشکر از شما

درواقع من میخوام وقتی سری اول داده رو گرفت ( مثلا دفعه اول 10 تا داده) بعد که دوباره اسکرول رو به پایین کشیدم دوباره 10 تا داده دیگه بگیره تا آخر اما نتونستم کدی براش پیدا کنم.

 publicclassnewst_frag extendsFragment{
privatestaticfinalStringTAG =MainActivity.class.getSimpleName();
privateListViewlistView;
privateFeedListAdapterlistAdapter;
privateList<FeedItem>feedItems;
privateStringURL_FEED ="http://www.mysite.com/test/get_data.php";


publicnewst_frag(){}

@Override
publicvoidonCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
clear_cache();
}

@Override
publicView onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState){
// Inflate the layout for this fragment
returninflater.inflate(R.layout.newst_frag, container,false);
}


@Override
publicvoidonActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
clear_cache();

listView =(ListView)getView().findViewById(R.id.list);
feedItems =newArrayList<FeedItem>();
listAdapter =newFeedListAdapter(getActivity(),feedItems);
listView.setAdapter(listAdapter);



// We first check for cached request
Cache cache =AppController.getInstance().getRequestQueue().getCache();
Cache.Entry entry = cache.get(URL_FEED);
if(entry !=null){
// fetch the data from cache
try{
String data =newString(entry.data,"UTF-8");
try{
parseJsonFeed(newJSONObject(data));
}catch(JSONException e){
e.printStackTrace();
}
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}

}else{
// making fresh volley request and getting json
JsonObjectRequest jsonReq =newJsonObjectRequest(Request.Method.GET,
URL_FEED,null,newResponse.Listener<JSONObject>(){

@Override
publicvoidonResponse(JSONObject response){
VolleyLog.d(TAG,"Response: "+ response.toString());
if(response !=null){
parseJsonFeed(response);
}
}
},newResponse.ErrorListener(){

@Override
publicvoidonErrorResponse(VolleyError error){
VolleyLog.d(TAG,"Error: "+ error.getMessage());
}
});

// Adding request to volley request queue
AppController.getInstance().addToRequestQueue(jsonReq);
}



listView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?> parent,View view,intposition,longid){

String str =feedItems.get(position).getSeller();
Toast.makeText(getActivity(),str,Toast.LENGTH_LONG).show();
}
});

}


privatevoidparseJsonFeed(JSONObject response){
try{
JSONArray feedArray = response.getJSONArray("ads");

for(inti =0; i < feedArray.length(); i++){
JSONObject feedObj =(JSONObject) feedArray.get(i);

FeedItem item =newFeedItem();
item.setId(feedObj.getInt("id"));
item.setTitle(feedObj.getString("title"));

// Image might be null sometimes
item.setImage(feedObj.getString("image"));
item.setIntro(feedObj.getString("intro"));
item.setEmail(feedObj.getString("email"));
item.setSeller(feedObj.getString("seller"));
item.setDate(feedObj.getString("date"));



feedItems.add(item);
}
// notify data changes to list adapater
listAdapter.notifyDataSetChanged();
}catch(JSONException e){
e.printStackTrace();
}
}
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .