mohammad_pyn 1 ارسال شده در 11 اردیبهشت، ۱۳۹۵ اشتراک گذاری ارسال شده در 11 اردیبهشت، ۱۳۹۵ سلام دوستان من یه سری اطلاعات رو بصورت json از سرور دریافت مینکنم و از طریق کتابخانه volley اونها رو دریافت و در یک ریسایکلر ویو نمایش میدم. الان میخوام در ریسایکلرویو کل اطلاعات همزمان لود نشده و با اسکرول کردن ده تا ده تا اطلاعات رو از سرور بخونه و هرچی پایین تر میاییک ده تای بعدی لود بشه چطور میتونم این کار رو بکنم این کد دریافت اطلاعات و فراخونی ریسایکلر ویو: private void makeJsonArrayRequest_News() { showpDialog(); JsonArrayRequest req = new JsonArrayRequest(urlJsonArray, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { Log.d(TAG, response.toString()); try { // Parsing json array response // loop through each json object for (int i = 0; i < response.length(); i++) { News news = new News(); JSONObject person = (JSONObject) response.get(i); String id = person.getString("id"); String title = person.getString("title"); String shortcontent = person.getString("shortcontent"); String longcontent = person.getString("longcontent"); String publicationdate = person.getString("publicationdate"); String pic = person.getString("pic"); String diffdate=person.getString("diffdate"); String src=person.getString("src"); String link=person.getString("link"); news.setId(id); news.setTitle(title); news.setShortContent(shortcontent); news.setLongContent(longcontent); news.setPublicationDate(publicationdate); news.setPic(pic); news.setDiffDate(diffdate); news.setSrc(src); news.setLongContent(link); mNews.add(news); } RecyclerView recyclerViewlist=(RecyclerView) findViewById(R.id.newsList); //tarif class adapter recyclview RVAdapterNews ad=new RVAdapterNews(NewsActivity.this,mNews); recyclerViewlist.setAdapter(ad); //tarif layout maneger baraye tarif noe nemayesh recyclerViewlist.setLayoutManager(new LinearLayoutManager(NewsActivity.this)); } catch (JSONException e) { e.printStackTrace(); Toast.makeText(getApplicationContext(), "ارتباط با سرور برقرار نشد،آخرین اطلاعات دریافتی نمایش داده می شود", Toast.LENGTH_LONG).show(); } hidepDialog(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); //Toast.makeText(getApplicationContext(), // error.getMessage(), Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "ارتباط با سرور برقرار نشد،آخرین اطلاعات دریافتی نمایش داده می شود", Toast.LENGTH_LONG).show(); hidepDialog(); } }); // Adding request to request queue AppController.getInstance().addToRequestQueue(req); } اینم کد آداپتر ریسایکلر ویو . . . public class RVAdapterNews extends RecyclerView.Adapter<RVAdapterNews.MyViewHolder> { //consteraktor ra misazim private Context context; private LayoutInflater inflater; private List<News> mNews = new ArrayList<>(); public RVAdapterNews(NewsActivity context, List<News> mNews){ this.context=context; this.inflater=LayoutInflater.from(context); this.mNews=mNews; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //bayad aval yek layout besazim - recycler_layout //layout ro moarefi mikonim View v=inflater.inflate(R.layout.rvnews_layout,parent,false); MyViewHolder vh=new MyViewHolder(v); return vh; } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { //itemhaei ke bayad neshan dadeh shavad bayad inja vared shavad final News news=mNews.get(position); holder.newsTitle.setText(news.getTitle()); //---------------------- long seconds=Long.parseLong(news.getDiffDate()); //int day = (int) TimeUnit.SECONDS.toDays(seconds); //long hours = TimeUnit.SECONDS.toHours(seconds) - (day *24); //long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds)* 60); //long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) *60); long minute = seconds/60; long hours =minute/60; int day = (int)hours/24; int week =day/7; int month =day/30; int year =day/365; if (seconds<60) holder.newsDatePublication.setText(seconds+" ثانیه قبل"); else if (seconds>=60 && seconds<3600) holder.newsDatePublication.setText(minute+" دقیقه قبل"); else if (seconds>=3600 && seconds<86400) holder.newsDatePublication.setText(hours+" ساعت قبل"); else if (seconds>=86400 && seconds<604800) holder.newsDatePublication.setText(day+" روز قبل"); else if (seconds>=604800 && seconds<2629743) holder.newsDatePublication.setText(week+" هفته قبل"); else if (seconds>=2629743 && seconds<31556926) holder.newsDatePublication.setText(month+" ماه قبل"); else holder.newsDatePublication.setText(year+" سال قبل"); //---------------------- //holder.newsDatePublication.setText(newsPublicationDateItems.get(position)); Uri uri =Uri.parse(news.getPic()); Picasso.with(context).load(uri).resize(200, 200).centerCrop().into(holder.newsPic, new com.squareup.picasso.Callback() { @Override public void onSuccess() { } @Override public void onError() { holder.newsPic.setImageResource(R.mipmap.ic_default_list); } }); holder.cvNews.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context, NewsViewActivity.class); intent.putExtra("id", news.getId()); intent.putExtra("title", news.getTitle()); intent.putExtra("shortContent", news.getShortContent()); intent.putExtra("longContent", news.getLongContent()); intent.putExtra("datePublication", news.getPublicationDate()); intent.putExtra("pic", news.getPic()); intent.putExtra("src", news.getSrc()); intent.putExtra("link", news.getLink()); context.startActivity(intent); } }); } @Override public int getItemCount() { //tedad itemhara baraye nemayesh midahim return mNews.size(); } class MyViewHolder extends RecyclerView.ViewHolder { //bayad ajzaye layout ro tarif konim ImageView newsPic; TextView newsTitle; TextView newsShortContent; TextView newsLongContent; TextView newsDatePublication; CardView cvNews; public MyViewHolder(View itemView) { super(itemView); newsPic=(ImageView) itemView.findViewById(R.id.ivNewsPic); newsTitle= (TextView) itemView.findViewById(R.id.txtNewsTitle); newsDatePublication = (TextView) itemView.findViewById(R.id.txtNewsDatePublication); cvNews = (CardView) itemView.findViewById(R.id.CVNews); } } } لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
سوال
mohammad_pyn 1
سلام دوستان
من یه سری اطلاعات رو بصورت json از سرور دریافت مینکنم و از طریق کتابخانه volley اونها رو دریافت و در یک ریسایکلر ویو نمایش میدم.
الان میخوام در ریسایکلرویو کل اطلاعات همزمان لود نشده و با اسکرول کردن ده تا ده تا اطلاعات رو از سرور بخونه و هرچی پایین تر میاییک ده تای بعدی لود بشه
چطور میتونم این کار رو بکنم
این کد دریافت اطلاعات و فراخونی ریسایکلر ویو:
اینم کد آداپتر ریسایکلر ویو
لینک ارسال
به اشتراک گذاری در سایت های دیگر
0 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.