当我开始从mysql数据库中搜索新单词时,我试图在recyclerview中清除我的搜索结果。问题是,当我搜索新单词但它将新搜索结果添加到我以前的搜索结果时。 我有一个Edittext和一个图像视图,作为按钮和recyclerview
//Activity_search.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class Activity_Search extends AppCompatActivity {
public static String data = "";
RecycleNewsAdapter recycleNewsAdapter;
LinearLayoutManager manager;
RecyclerView recyclenews;
ImageView imgsearch;
EditText txtsearch;
ArrayList<recycleinfo> recylerinfos;
ArrayList<String>recycleTitle ;
ArrayList<String> recycleimg;
ArrayList<String> recycleId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity__search);
// Toast.makeText(Activity_AfNews.this,afgnews, Toast.LENGTH_SHORT).show();
recycleNewsAdapter = new RecycleNewsAdapter(recylerinfos);
recycleimg = new ArrayList<>();
recycleTitle = new ArrayList<>();
recycleId = new ArrayList<>();
recylerinfos = new ArrayList<>();
recyclenews = (RecyclerView) findViewById(R.id.searchRecycle);
manager = new LinearLayoutManager(this);
recyclenews.setHasFixedSize(true);
recyclenews.setLayoutManager(manager);
recyclenews.setNestedScrollingEnabled(false);
imgsearch = (ImageView) findViewById(R.id.imgsearch);
txtsearch = (EditText) findViewById(R.id.txtsearch);
imgsearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = txtsearch.getText().toString();
if (!txtsearch.getText().toString().equals("")){
new AsyncTaskSearch("http://192.198.1.100/search.php",text).execute();
try {
JSONObject jsonObject=new JSONObject(data);
JSONArray jsonTitleaf=jsonObject.getJSONArray("title");
JSONArray jsonPicaf=jsonObject.getJSONArray("pics");
JSONArray jsonId=jsonObject.getJSONArray("id");
for (int i=0;i<jsonTitleaf.length();i++){
recycleimg.add(jsonPicaf.getString(i));
recycleTitle.add(jsonTitleaf.getString(i));
recycleId.add(jsonId.getString(i));
}
for (int i=0;i<recycleTitle.size();i++){
recycleinfo recycleinfo = new recycleinfo();
recycleinfo.title = recycleTitle.get(i);
recycleinfo.img = recycleimg.get(i);
recycleinfo.Id = recycleId.get(i);
recylerinfos.add(recycleinfo);
}recycleNewsAdapter.notifyDataSetChanged();
recyclenews.setAdapter(new RecycleNewsAdapter(recylerinfos) );
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
}
}
//RecyclerNewsAdoptor.java
public class RecycleNewsAdapter extends RecyclerView.Adapter<viewholder>{
ArrayList<recycleinfo> recycleinfos = new ArrayList<>();
public RecycleNewsAdapter(ArrayList<recycleinfo> recycleinfos){
this.recycleinfos=recycleinfos;
}
@Override
public viewholder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclernews, parent, false);
return new viewholder(view);
}
@Override
public void onBindViewHolder(viewholder holder, int position) {
recycleinfo recycleinfo = recycleinfos.get(position);
holder.title.setText(recycleinfo.title);
holder.Id = recycleinfo.Id;
Picasso.with(G.context).load("http://afghanistanema.com/"+recycleinfo.img).into(holder.img);
// Picasso.with(G.context).load("http://afghanistanema.com/"+recycleinfo.img).into(holder.img);
}
@Override
public int getItemCount() {
return recycleinfos.size();
}
}
class viewholder extends RecyclerView.ViewHolder{
public ImageView img;
public TextView title;
public TextView date;
public String Id="";
public LinearLayout linearLayout;
public viewholder(View itemView) {
super(itemView);
img = (ImageView) itemView.findViewById(R.id.img);
date = (TextView) itemView.findViewById(R.id.date);
title = (TextView) itemView.findViewById(R.id.title);
linearLayout = (LinearLayout) itemView.findViewById(R.id.linearNews);
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(G.context, ActivityWait_full_Text.class);
intent.putExtra("id", Id);
intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
G.context.startActivity(intent);
// Toast.makeText(G.context,Id+"", Toast.LENGTH_SHORT).show();
}
});
}
}
//recycleinfo.java
public class recycleinfo {
public String img;
public String title;
public String Id;
public String date;
}
答案 0 :(得分:0)
当用户点击clear()
ArrayList
时的搜索按钮并刷新RecyclerAdapter
。像这样:
recycleinfo.clear();
recycleNewsAdapter.notifyDataSetChanged();
您清除 ArrayList
而非创建新,因为RecyclerAdapter
引用ArrayList
,这一点非常重要如果你创建一个新的,它就消失了。
答案 1 :(得分:0)
添加recylerinfos.clear();如下所示。
imgsearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recylerinfos.clear(); // adding this line will clear the old search results.
String text = txtsearch.getText().toString();
if (!txtsearch.getText().toString().equals("")){
new AsyncTaskSearch("http://192.198.1.100/search.php",text).execute();
try {
JSONObject jsonObject=new JSONObject(data);
JSONArray jsonTitleaf=jsonObject.getJSONArray("title");
JSONArray jsonPicaf=jsonObject.getJSONArray("pics");
JSONArray jsonId=jsonObject.getJSONArray("id");
for (int i=0;i<jsonTitleaf.length();i++){
recycleimg.add(jsonPicaf.getString(i));
recycleTitle.add(jsonTitleaf.getString(i));
recycleId.add(jsonId.getString(i));
}
for (int i=0;i<recycleTitle.size();i++){
recycleinfo recycleinfo = new recycleinfo();
recycleinfo.title = recycleTitle.get(i);
recycleinfo.img = recycleimg.get(i);
recycleinfo.Id = recycleId.get(i);
recylerinfos.add(recycleinfo);
}recycleNewsAdapter.notifyDataSetChanged();
recyclenews.setAdapter(new RecycleNewsAdapter(recylerinfos) );
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
}
答案 2 :(得分:0)
感谢您的回答friends.i可以通过向我的onclick.i添加一些简单的代码来解决我的问题。只需清除Onclick中的所有arraylist并解决它。
recycleimg.clear();
recycleId.clear();
recycleTitle.clear();
recylerinfos.clear();