我有的recyclerView包含一些文本视图和2个图像视图.
当用户点击每个图像视图时,我想在用户点击每一行和另一个任务时执行任务..但我只能同时处理其中一个.
现在如果我设置recylerview.addOnItemTouchListener我无法处理图像视图onclicks clicklistener并在适配器中设置为on ,因为当用户点击图像视图时,行的点击监听器将触发.
下面的代码是我的处理回收站视图项目的类
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private OnItemClickListener mListener;
public interface OnItemClickListener {
public void onItemClick(View view, int position);
public void onLongItemClick(View view, int position);
}
GestureDetector mGestureDetector;
public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null …Run Code Online (Sandbox Code Playgroud) 我有一个搜索视图,可以过滤回收者视图项目;它可以正确过滤项目,但是当我关闭搜索视图时notifyDataSetChanged,例如,如果我将新项目添加到回收站视图中,直到我关闭该应用程序并再次打开它,我的适配器将无法工作。这是我用于过滤项目的代码。
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (TextUtils.isEmpty(newText)){
adapter.resetList(userData.GetAllWords(user.getId()));
} else {
final ArrayList<Word> filteredModelList = filter(wordlist, newText);
adapter.setfilter(filteredModelList);
}
return false;
}
private ArrayList<Word> filter(ArrayList<Word> wordlistt, String query) {
query = query.toLowerCase();
final ArrayList<Word> filteredModelList = new ArrayList<>();
for (Word myword : wordlistt) {
if (myword.getWord().contains(query) || myword.getTranslation().contains(query)) {
filteredModelList.add(myword);
}
}
return filteredModelList;
}
Run Code Online (Sandbox Code Playgroud)
这是我在适配器中的代码
public void setfilter(ArrayList<Word> filteredwordlist) {
wordlist = new ArrayList<>();
wordlist.addAll(filteredwordlist);
notifyDataSetChanged();
} …Run Code Online (Sandbox Code Playgroud)