gpt4 book ai didi

android - 在 Realm Recycler View Android 中搜索 View

转载 作者:行者123 更新时间:2023-11-29 01:08:02 25 4
gpt4 key购买 nike

<分区>

我在我的应用程序中实现了一个回收站 View 来显示公司中的人员列表。我将所有这些信息存储在 Realm DB 中。现在我想在窗口顶部实现搜索选项,以便用户可以按姓名搜索人。我尝试使用以下代码。但是这个功能不起作用。我无法在此窗口上进行任何搜索。这是我的 recyclerView searchView 代码。

我的 Activity 课

public class MyColleaguesPage extends AppCompatActivity implements MyColleaguesAdapter.ColleagueListListener{

private RecyclerView recyclerView;
private MyColleaguesAdapter adapter;
private Realm colleagueRealm;
private RealmResults<MyColleagueModel> colleagueResult;
private List<MyColleagueModel> filteredModelList;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mycolleagues_layout);

}
colleagueRealm = Realm.getDefaultInstance();
recyclerView = (RecyclerView) findViewById(R.id.colleagues_recycler);

if (!Prefs.with(this).getPreLoadColleague()) {
setRealmData();
}
setUpRecycler();

showAllPersons();

}

private void showAllPersons() {
colleagueResult = colleagueRealm.where(MyColleagueModel.class).findAll();
setAdapter(colleagueResult);
adapter.notifyDataSetChanged();
}

private void setAdapter(RealmResults<MyColleagueModel> results) {

adapter = new MyColleaguesAdapter(this, colleagueRealm.where(MyColleagueModel.class).findAllSortedAsync("id"),this);
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
private void setUpRecycler() {
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
recyclerView.setHasFixedSize(true);
// use a linear layout manager since the cards are vertically scrollable
final LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
}

private void setRealmData(){

.......
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.recycler_menu, menu);

final MenuItem item = menu.findItem(R.id.search);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
search(searchView);
return true;
}

private void search(SearchView searchView) {

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {

return false;
}

@Override
public boolean onQueryTextChange(String newText) {

filteredModelList = filter(colleagueResult, newText);

if (filteredModelList.size() > 0) {
return true;
} else {
Toast.makeText(MyColleaguesPage.this, "Not Found", Toast.LENGTH_SHORT).show();
return false;
}
}
});
}
private List<MyColleagueModel> filter(List<MyColleagueModel> models, String query) {
query = query.toLowerCase();

filteredModelList = new ArrayList<>();

for (MyColleagueModel model : models) {
final String text = model.getName().toLowerCase().toString();
if (text.contains(query)) {
filteredModelList.add(model);
}
}

// arraylist in your adapter
adapter = new MyColleaguesAdapter(this,colleagueRealm.where(MyColleagueModel.class).findAllSortedAsync("name"), getApplicationContext());
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();

return filteredModelList;
}
}

我的适配器类

public class MyColleaguesAdapter extends RealmRecyclerViewAdapter<MyColleagueModel, MyColleaguesAdapter.ColleagueHolder>{

private List<MyColleagueModel> myColleagueModels;
private Context context;

public interface ColleagueListListener {

}

private final ColleagueListListener colleagueListListener;

public MyColleaguesAdapter(ColleagueListListener colleagueListListener, RealmResults<MyColleagueModel> realmResults, Context context ) {
super(realmResults, true);
this.context = context;
this.colleagueListListener = colleagueListListener;
}

// create new views (invoked by the layout manager)
@Override
public ColleagueHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//inflate a new colleague view
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.colleage_row_layout,parent,false);
return new ColleagueHolder(view);
}
@Override
public void onBindViewHolder(ColleagueHolder holder, int position) {
final MyColleagueModel myColleague = getData().get(position);
//final MyColleagueModel myColleague=realmResults.get(position);
holder.colleagueName.setText(myColleague.getName());
holder.companyName.setText(myColleague.getCompany());
holder.jobTitle.setText(myColleague.getTitle());
holder.cardView.setTag(position);
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//editDataInterface.editData(view,position);
int pos = (int)view.getTag();
Intent i=new Intent(context,DetailMyColleague.class);
i.putExtra("name",myColleague.getName());
i.putExtra("title",myColleague.getTitle());
i.putExtra("company",myColleague.getCompany());
context.startActivity(i);
}
});

}

public class ColleagueHolder extends RecyclerView.ViewHolder{

.......

}
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com