我填充用新數據回收視圖上的活動 result.The問題是新的數據在 回收視圖月底得到追加如何清除以前的數據在回收視圖 和膨脹回收商查看新數據。如何在Android中刷新recyclerview?
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mAdapter.notifyDataSetChanged();
search_info.clear();
book_type.clear();
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
getBookData(data);
if (books_list.size() > 0) {
books_list.clear();
mAdapter.swap(prepareData());
mAdapter.notifyDataSetChanged();
}
updateBooks(recyclerView);
mAdapter.notifyDataSetChanged();
}
}
}
這是getBookData的代碼。
private void getBookData(Intent data) {
String singles = data.getStringExtra("singles");
String status_5in1series = data.getStringExtra("status_5in1series");
String special_issues = data.getStringExtra("special_issues");
String special_collection = data.getStringExtra("special_collection");
String status_3in1series = data.getStringExtra("status_3in1series");
String status_2in1 = data.getStringExtra("status_2in1");
String special_packs = data.getStringExtra("special_packs");
String junior = data.getStringExtra("junior");
String character_collections = data.getStringExtra("character_collections");
String single_digest = data.getStringExtra("single_digest");
String double_digest = data.getStringExtra("double_digest");
String toddler = data.getStringExtra("toddler");
String tinkle_treasure = data.getStringExtra("tinkle_treasure");
String ack = data.getStringExtra("ack");
String tinkle = data.getStringExtra("tinkle");
search_info.add(singles);
search_info.add(status_5in1series);
search_info.add(special_issues);
search_info.add(special_collection);
search_info.add(status_3in1series);
search_info.add(status_2in1);
search_info.add(special_packs);
search_info.add(junior);
search_info.add(character_collections);
search_info.add(single_digest);
search_info.add(double_digest);
search_info.add(toddler);
search_info.add(tinkle_treasure);
search_info.removeAll(Collections.singleton(null));
book_type.add(ack);
book_type.add(tinkle);
book_type.removeAll(Collections.singleton(null));
String search_array[] = (String[]) search_info.toArray(new String[search_info.size()]);
String books_array[] = (String[]) book_type.toArray(new String[book_type.size()]);
String books_info = dbHandler.searchForBooks(search_array, books_array).toString();
ParseLocBooks parseLocBooks = new ParseLocBooks(books_info);
parseLocBooks.parseJSON();
title = ParseLocBooks.title;
price = ParseLocBooks.price;
vol_no = ParseLocBooks.vol_no;
status = ParseLocBooks.status;
ISBN = ParseLocBooks.ISBN;
book_id = ParseLocBooks.book_id;
brand = ParseLocBooks.brand;
book_code = ParseLocBooks.book_code;
sku = ParseLocBooks.sku;
lang = ParseLocBooks.lang;
}
這是我的prepareData代碼。
private ArrayList prepareData() {
for (int i = 0; i < book_id.length; i++) {
BooksInfo booksInfo = new BooksInfo();
booksInfo.setTitle(title[i]);
booksInfo.setPrice(price[i]);
booksInfo.setVol_no(vol_no[i]);
booksInfo.setStatus(status[i]);
booksInfo.setISBN(ISBN[i]);
booksInfo.setBook_id(book_id[i]);
booksInfo.setBrand(brand[i]);
booksInfo.setBook_code(book_code[i]);
booksInfo.setSku(sku[i]);
booksInfo.setLang(lang[i]);
books_list.add(booksInfo);
}
return books_list;
}
,這是我的DataAdapter代碼。
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private ArrayList<BooksInfo> books;
private Context ctx;
private String qty;
private RecyclerView recyclerView;
public DataAdapter()
{
}
@NonNull
public OnItemCheckListener onItemCheckListener;
public DataAdapter(Context context, ArrayList<BooksInfo> books, RecyclerView recyclerView,String qty, OnItemCheckListener onItemCheckListener) {
this.books = books;
this.ctx = context;
this.qty = qty;
this.onItemCheckListener =onItemCheckListener;
this.recyclerView = recyclerView;
}
public interface OnItemCheckListener {
void onItemCheck(BooksInfo item,ViewHolder viewHolder);
void onItemUncheck(BooksInfo item,ViewHolder viewHolder);
}
public void swap(ArrayList<BooksInfo> datas){
datas = new ArrayList<>();
recyclerView.removeAllViews();
books.clear();
books.addAll(datas);
notifyDataSetChanged();
}
@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final DataAdapter.ViewHolder viewHolder, int i) {
final BooksInfo booksInfo = (BooksInfo) books.get(i);
viewHolder.tv_title.setText(booksInfo.getTitle());
viewHolder.tv_price.setText(booksInfo.getPrice());
viewHolder.tv_vol_no.setText(booksInfo.getVol_no());
viewHolder.tv_status.setText(booksInfo.getStatus());
viewHolder.tv_isbn.setText(booksInfo.getISBN());
viewHolder.tv_book_id.setText(booksInfo.getBook_id());
viewHolder.tv_brand.setText(booksInfo.getBrand());
viewHolder.tv_sku.setText(booksInfo.getSku());
viewHolder.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewHolder.cb_selection.setChecked(!(viewHolder.cb_selection.isChecked()));
if (viewHolder.cb_selection.isChecked()){
onItemCheckListener.onItemCheck(booksInfo,viewHolder);
// viewHolder.tv_qty.setText(qty);
}else{
onItemCheckListener.onItemUncheck(booksInfo,viewHolder);
// viewHolder.tv_qty.setText("0");
}
}
});
}
public void updateNotes(ArrayList notesList) {
books = notesList;
}
public void updateQty(String q)
{
qty =q;
}
@Override
public int getItemCount() {
return books.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView tv_title,tv_price,tv_vol_no,tv_status,tv_isbn,tv_book_id,tv_brand,tv_sku,tv_qty;
public CheckBox cb_selection;
View itemView;
public ViewHolder(View itemView) {
super(itemView);
this.itemView = itemView;
tv_title = (TextView)itemView.findViewById(R.id.tv_title);
tv_price = (TextView) itemView.findViewById(R.id.tv_price);
tv_vol_no = (TextView) itemView.findViewById(R.id.tv_volno);
tv_status = (TextView) itemView.findViewById(R.id.tv_status);
tv_isbn = (TextView) itemView.findViewById(R.id.tv_isbn);
tv_book_id = (TextView) itemView.findViewById(R.id.tv_bookid);
tv_brand = (TextView) itemView.findViewById(R.id.tv_brand);
cb_selection = (CheckBox) itemView.findViewById(R.id.cb_selection);
cb_selection.setClickable(false);
tv_sku = (TextView) itemView.findViewById(R.id.tv_sku);
tv_qty = (TextView) itemView.findViewById(R.id.tv_qty);
}
public void setOnClickListener(View.OnClickListener onClickListener) {
itemView.setOnClickListener(onClickListener);
}
}
}
任何幫助或建議表示讚賞。謝謝。
,你已經創建了books_list對象? –
@Sandeepdhiman請在我的post.Thank您結束檢查prepareData方法。 – anup