清除Recyclerview中的搜索结果

时间:2017-05-21 06:34:28

标签: java android

当我开始从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;


}

3 个答案:

答案 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();