DataSet RecyclerView имеет только 1 результат (для любых ключевых слов), когда используется с EditText для поиска через RecyclerView - PullRequest
0 голосов
/ 09 января 2019

Как следует из названия

На начальном этапе, когда я не ввожу никаких ключевых слов, я могу видеть все результаты RecyclerView, но при попытке поиска по списку элементов из RecyclerView каждый раз, когда я вводю любое ключевое слово, все возвращается это самый первый (и только один) результат RecyclerView. Не нашел ничего похожего на эту тему, поэтому размещая здесь, любая помощь будет оценена. : D Я не очень разбираюсь в программировании Android.

CollegeSearch.java

public class CollegeSearch extends AppCompatActivity implements RcycAdapter.OnItemClickListener{@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_college_search);

    //setting the toolbar
    Toolbar toolbar=findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Rcycle6=findViewById(R.id.Rcycle6);
    //for good performance
    Rcycle6.setHasFixedSize(true);
    //for setting horizontal view for the recycler view
    LinearLayoutManager hlinearlayout3 = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false);
    Rcycle6.setLayoutManager(hlinearlayout3);
    //get the image url and university name from db
    requestQueue6 = Volley.newRequestQueue(this);
    //Set the Data Adapter
    dataList6 = new ArrayList<>();
    parseJSON6();

    etSearch2=findViewById(R.id.etSearch2);
    etSearch2.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            filter(s.toString());
        }
    });

}public void filter(String text) {
    ArrayList<DataFetchCollegeDetails> filteredList = new ArrayList<>();

    for (DataFetchCollegeDetails item : dataList6) {
        if (item.getName().toLowerCase().contains(text.toLowerCase())) {
            filteredList.add(item);
        }
    }
    example6Adapter= new RcycAdapter(this, filteredList);
    example6Adapter.filterList(filteredList);
}public void parseJSON6(){
      //logic
      example6Adapter= new RcycAdapter(CollegeSearch.this,dataList6);
      Rcycle6.setAdapter(example6Adapter);
      example6Adapter.setOnItemClickListener(CollegeSearch.this);
      requestQueue6.add(request);
    }
}

RcycAdapter.java

public void filterList(ArrayList<DataFetchCollegeDetails> filteredList) {
    dataList = filteredList;
    notifyDataSetChanged();
}
...