reza_web
شنبه 15 دی 1397, 11:38 صبح
سلام
من یه ریسایکلرویو دارم که از سرور داده میگیره و می خواهم در ابتدا 10 رکورد نمایش داده بشه و با به انتها رفتن ریسایکلرویو 10 رکورد بعدی از سرور دریافت و نمایش داده بشه
من از این کتابخانه استفاده کردم
https://github.com/saeedsh92/Infinite-Scroll-Provider
همچی هم درسته ولی مشکل اینه که به انتهای لیست که میره و از سمت سرور داده جدید دریافت میشه رکورد جدید نمایش داده نمیشه
یعنی درواقع نمی خواهم اداپتور را دوباره پر کنم و می خواهم به انتهای لیست داده اضافه بشه
نمیدونم چطوری باید به کاستوم اداپتر داده اضافه کنم
کسی میدونه چگونه باید اینکار راانجام دهم؟
farhad_shiri_ex
شنبه 15 دی 1397, 12:05 عصر
نمیدونم چطوری باید به کاستوم اداپتر داده اضافه کنم
داخل کلاسی که از RecyclerView Adapter ارث بری شده اگر دسترسی دارید و احتمالا باید array list که تو این کلاس تعریف شده به صورت private باشه! به هرحال اگر متد دسترسی دارید که خوب می تونید این آرایه را به روز کنید با داده های جدید و بعد notify کردن لیست اگر هم متد دسترسی ندارید باید خودتون ایجاد کنید ویا احتمالا خود این کتابخونه همچنین دسترسی باید داشته باشه! بنابراین کافی در قسمتی که دارید داده ها را دریافت مکنید به آرایه لیست دسترسی داشته باشید. خیلی ساده...
reza_web
شنبه 15 دی 1397, 12:32 عصر
اداپتوری که من دارم اینه:
public class ArticlesAdapter extends RecyclerView.Adapter<ArticlesAdapter.ViewHolder> {
private final int[] id;
private final String[] category;
private final String[] title;
private final String[] tarikh;
private final String[] pic;
private final int rowLayout;
public PersonDetailsAdapterListener onClickListener;
ArticlesAdapter(int[] id,String[] category, String[] title , String[] tarikh,String[] pic, @LayoutRes int rowLayout,PersonDetailsAdapterListener listener) {
this.id = id;
this.category = category;
this.title = title;
this.tarikh = tarikh;
this.pic = pic;
this.rowLayout = rowLayout;
this.onClickListener = listener;
}
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(r owLayout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
holder.txtcat.setText(category[position]);
holder.txttit.setText(title[position]);
}
@Override
public int getItemCount() {
return title.length;
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView txtcat;
private TextView txttit;
private ImageView img;
public ViewHolder(View view) {
super(view);
txtcat = view.findViewById(R.id.textView2);
txttit = view.findViewById(R.id.textView3);
img = view.findViewById(R.id.image);
Typeface type2 = Typeface.createFromAsset(itemView.getContext().get Assets(), "fonts/IRANSansMobile(FaNum).ttf");
txtcat.setTypeface(type2,1);txttit.setTypeface(typ e2,1);
txtcat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickListener.catViewOnClick(v, getAdapterPosition());
}
});
txttit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickListener.titViewOnClick(v, getAdapterPosition());
}
});
img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickListener.imgViewOnClick(v, getAdapterPosition());
}
});
}
}
public interface PersonDetailsAdapterListener {
void catViewOnClick(View v, int position);
void titViewOnClick(View v, int position);
void imgViewOnClick(View v, int position);
}
}
یرای ست کردن ریسایکلرویو از داده های اداپتور از این کد استفاده می کنم
ArticlesAdapter mAdapter = new ArticlesAdapter(idd, category,title,tarikh, pic, R.layout.pattern_articles,new ArticlesAdapter.PersonDetailsAdapterListener() {
@Override
public void catViewOnClick(View v, int position) {
Intent intent = new Intent(getContext(), Article.class);
Integer myVariable = idd[position];
intent.putExtra("key_name", myVariable);
startActivity(intent);
}
@Override
public void titViewOnClick(View v, int position) {
Intent intent = new Intent(getContext(), Article.class);
Integer myVariable = idd[position];
intent.putExtra("key_name", myVariable);
startActivity(intent);
}
@Override
public void imgViewOnClick(View v, int position) {
Intent intent = new Intent(getContext(), Article.class);
Integer myVariable = idd[position];
intent.putExtra("key_name", myVariable);
startActivity(intent);
}
});
recyclerView.setAdapter(mAdapter);
نمی خواهم دوباره از اول داده را ست کنم بلکه می خواهم به آن اضافه نمایم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.