В моем приложении android у меня есть вид переработчика и у меня есть панель поиска. Я получаю данные из БД. При поиске соответствующих данных из базы данных производится поиск и добавляется число строк в представлении рециркулятора в зависимости от длины выборки массива json из базы данных. Теперь проблема возникает, когда я выполняю другой поиск, строки, сгенерированные из последнего поиска, не удалили. Infect новые строки добавляются. Например, в первый раз, когда я выполнял поиск, добавляются 3 строки, потому что длина массива json равна 3. В следующий раз, когда я произвел поиск, скажем, длина массива json равна 2, тогда предыдущие 3 строки не получить удалить заражать я получаю 5 строк (предыдущий поиск 3 строки и следующий поиск 2 строки). Я хочу, чтобы при выполнении поиска строки, сгенерированные в результате предыдущего поиска, были удалены.
adapterise = new MessagesAdapter(MessageItem,home_Activity);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapterise);
try {
JSONArray jsonArray = new JSONArray(output);
recyclerView.removeAllViewsInLayout();
recyclerView.setAdapter(null);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapterise);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);//returnJson;
pic=jsonObject.getString("pic");
MessageItem.add(new MessageItem(pic,jsonObject.getString("name"),jsonObject.getString("email"),jsonObject.getString("mobile"),jsonObject.getString("uid")));
}
}
Это код моего адаптера
class MessagesViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView imageView;
ImageView imageViewc;
ImageView imageViewm;
TextView textView1;
TextView textView2;
TextView textView3;
CardView card;
String pos;
boolean selected= false;
MessagesViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
imageViewc = itemView.findViewById(R.id.call);
imageViewm = itemView.findViewById(R.id.msg);
textView1 = itemView.findViewById(R.id.placename);
textView2 = itemView.findViewById(R.id.placedescription);
textView3 = itemView.findViewById(R.id.placedescriptions);
card = itemView.findViewById(R.id.card);
imageViewc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:"+textView3.getText().toString()));
context.startActivity(callIntent);
}
});
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent callIntent = new Intent(context, LoadPic.class);
callIntent.putExtra("url",pos);
context.startActivity(callIntent);
}
});
imageViewm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment fragment = new WriteMessageToUser();
if(fragment!=null) {
for (Fragment fragments : ((HomeActivity)context).getSupportFragmentManager().getFragments()) {
((HomeActivity)context).getSupportFragmentManager().beginTransaction().remove(fragments).commit();
}
}
FragmentTransaction transaction=((HomeActivity)context).getSupportFragmentManager().beginTransaction();
Bundle bundle=new Bundle();
bundle.putString("email", textView2.getText().toString());
bundle.putString("heading",textView1.getText().toString());
fragment.setArguments(bundle);
transaction.replace(R.id.nav_host_fragment,fragment);
transaction.commit();
}
});
card.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
card.setCardBackgroundColor(ContextCompat.getColor(context,R.color.light_blue));
selected=true;
delete_chat.setVisibility(View.VISIBLE);
receivers.add(card.getTag().toString());
return true;
}
});
card.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(selected){
receivers.remove(card.getTag().toString());
card.setCardBackgroundColor(ContextCompat.getColor(context,R.color.white));
selected=false;
}
if(receivers.size()==0){
delete_chat.setVisibility(View.GONE);
}
}
});
}
@Override
public void onClick(View view) {
}
}
public MessagesAdapter(List<MessageItem> exampleList, Context context) {
this.exampleList = exampleList;
this.context = context;
exampleListFull = new ArrayList<>(exampleList);
}
@NonNull
@Override
public MessagesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_item,
parent, false);
return new MessagesViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MessagesViewHolder holder, final int position) {
MessageItem currentItem = exampleList.get(position);
if(currentItem.getImageResource().contains("https:")){
Glide.with(context).load(currentItem.getImageResource()).into(holder.imageView);
Glide.with(context).load(currentItem.getImageResource()).apply(RequestOptions.circleCropTransform()).into(holder.imageView);
holder.pos=currentItem.getImageResource();
}else{
Glide.with(context).load(ROOT_URL+"/"+currentItem.getImageResource()).into(holder.imageView);
Glide.with(context).load(ROOT_URL+"/"+currentItem.getImageResource()).apply(RequestOptions.circleCropTransform()).into(holder.imageView);
holder.pos=ROOT_URL+"/"+currentItem.getImageResource();
}
holder.textView1.setText(currentItem.getText1());
holder.textView2.setText(currentItem.getText2());
holder.textView3.setText(currentItem.getText3());
holder.card.setTag(currentItem.gettextTag());
}
@Override
public int getItemCount() {
return exampleList.size();
}