小编ham*_*ami的帖子

如何处理项目单击侦听器上的RecyclerView及其行内的视图

我有的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)

android

7
推荐指数
1
解决办法
6193
查看次数

使用搜索视图搜索后,adapter.notifyDataSetChanged不起作用

我有一个搜索视图,可以过滤回收者视图项目;它可以正确过滤项目,但是当我关闭搜索视图时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)

android android-recyclerview

0
推荐指数
1
解决办法
1084
查看次数

标签 统计

android ×2

android-recyclerview ×1