我正在使用回收器视图开发一个简单的电影列表应用程序

用户3323487

到目前为止,我是 android 的新手,我已经创建了带有装饰的回收器视图,但现在我无法在回收器视图中设置 onClick 侦听器,请帮助...第一个错误是点击侦听器界面说

clicklistener 已经在编译单元中定义

因此 onclick 和 onlongclick 方法也会出错....在主要活动中,我在覆盖时遇到错误说

方法不会从其超类覆盖

回收器触摸侦听器代码:

public interface ClickListener {
    void onClick(View view, int position);

    void onLongClick(View view, int position);
}

public class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {

    private GestureDetector gestureDetector;
    private MainActivity.ClickListener clickListener;

    public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final MainActivity.ClickListener clickListener) {
        this.clickListener = clickListener;
        gestureDetector = 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 && clickListener != null) {
                    clickListener.onLongClick(child, recyclerView.getChildLayoutPosition(child));
                }
            }
        });

    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

        View child = rv.findChildViewUnder(e.getX(), e.getY());
        if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
            clickListener.onClick(child, rv.getChildLayoutPosition(child));
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView rv, MotionEvent e) {
    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }



}
main_activty:

public class MainActivity extends AppCompatActivity {

    private List<Movie> movieList=new ArrayList<>();
    private RecyclerView recyclerView;
    private MoviesAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
        mAdapter=new MoviesAdapter(movieList);
        RecyclerView.LayoutManager mLayoutManager=new LinearLayoutManager(getApplicationContext());
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(mAdapter);
        prepareMovieData();
        recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
        recyclerView.setAdapter(mAdapter);
        recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), recyclerView, new RecyclerTouchListener.ClickListener() {
            @Override
            public void onClick(View view, int position) {
                Movie movie = movieList.get(position);
                Toast.makeText(getApplicationContext(), movie.getTitle() + " is selected!", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onLongClick(View view, int position) {

            }
        }));


    }
    private void prepareMovieData(){

        Movie movie = new Movie("Mad Max: Fury Road", "Action & Adventure", "2015");
        movieList.add(movie);

        movie = new Movie("Inside Out", "Animation, Kids & Family", "2015");
        movieList.add(movie);

        movie = new Movie("Star Wars: Episode VII - The Force Awakens", "Action", "2015");
        movieList.add(movie);

        movie = new Movie("Shaun the Sheep", "Animation", "2015");
        movieList.add(movie);

        movie = new Movie("The Martian", "Science Fiction & Fantasy", "2015");
        movieList.add(movie);

        movie = new Movie("Mission: Impossible Rogue Nation", "Action", "2015");
        movieList.add(movie);

        movie = new Movie("Up", "Animation", "2009");
        movieList.add(movie);

        movie = new Movie("Star Trek", "Science Fiction", "2009");
        movieList.add(movie);

        movie = new Movie("The LEGO Movie", "Animation", "2014");
        movieList.add(movie);

        movie = new Movie("Iron Man", "Action & Adventure", "2008");
        movieList.add(movie);

        movie = new Movie("Aliens", "Science Fiction", "1986");
        movieList.add(movie);

        movie = new Movie("Chicken Run", "Animation", "2000");
        movieList.add(movie);

        movie = new Movie("Back to the Future", "Science Fiction", "1985");
        movieList.add(movie);

        movie = new Movie("Raiders of the Lost Ark", "Action & Adventure", "1981");
        movieList.add(movie);

        movie = new Movie("Goldfinger", "Action & Adventure", "1965");
        movieList.add(movie);

        movie = new Movie("Guardians of the Galaxy", "Science Fiction & Fantasy", "2014");
        movieList.add(movie);

        mAdapter.notifyDataSetChanged();
    }

    public interface ClickListener {
    }
}
达山帕尼亚

我正在使用的自定义实现RecyclerView.OnItemTouchListener这是它的代码 -

public class RecycleItemClickListener implements RecyclerView.OnItemTouchListener {
    private OnItemClickListener mListener;

    public interface OnItemClickListener {
        public void onItemClick(View view, int position);
    }

    GestureDetector mGestureDetector;

    public RecycleItemClickListener(Context context, OnItemClickListener listener) {
        mListener = listener;
        mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }
        });
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
        View childView = view.findChildViewUnder(e.getX(), e.getY());
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
            mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }
}

然后RecycleItemClickListener像这样使用这个自定义-

recyclerView.addOnItemTouchListener(
                        new RecycleItemClickListener(context, new RecycleItemClickListener.OnItemClickListener() {
                            @Override public void onItemClick(View view, int position) {
                                // TODO Handle item click

                            }
                        })
                );

这总是有效:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 swift 为我的 iOS 应用程序创建一个简单的导航视图

来自分类Dev

我正在开发一个用于求职的 android 应用程序。这里我使用 PHP 作为后端

来自分类Dev

当我切换到另一个包含回收者视图的活动时,应用程序崩溃

来自分类Dev

我想在 Play 商店安装的应用程序片段中创建一个列表视图

来自分类Dev

我正在尝试使用路由使用angularjs创建一个简单的登录应用程序,但未处理事件

来自分类Dev

我正在创建一个简单的应用程序,在该应用程序中,成功登录后我要从登录页面导航到起始页面

来自分类Dev

我正在使用一个有另一个团队成员的应用程序

来自分类Dev

我正在制作一个Android节拍器应用程序。但是,播放声音时程序停止

来自分类Dev

我正在开发一个phonegap应用程序,但无法连接数据库,我已附加了以下程序?

来自分类Dev

如何开发一个程序包以使用比我的应用程序更早版本的Guzzle?

来自分类Dev

将主回收站视图从content_main移到我的res文件中的另一个布局后,应用程序崩溃

来自分类Dev

我不想在使用另一个开发应用程序时打开我已经关闭的应用程序

来自分类Dev

我正在尝试使用Android开发人员myfirstapp指南制作我的第一个android应用程序,但是我在MyActivity.jav文件中获取了所有红色标记。

来自分类Dev

当我单击列表视图项时,应用程序崩溃,而不是打开另一个活动

来自分类Dev

当我单击列表视图项时,应用程序崩溃,而不是打开另一个活动

来自分类Dev

我正在创建一个简单的反向字符串android应用程序,请确认我前进的方式是否正确

来自分类Dev

我正在构建一个 Windows 窗体应用程序。如何将我的应用程序中的所有数据网格视图收集到一个变量中?

来自分类Dev

我可以在Ice Cream Sandwich 4.0.4上使用Webkit 537.36开发一个Android Web应用程序吗

来自分类Dev

我正在用jQuery创建一个动画的flahscard应用程序。我从哪里开始?

来自分类Dev

我正在kony one studio中开发一个应用程序,因此在哪里可以找到.apk文件?

来自分类Dev

iOS RSS Feed应用程序:我应该为每个视图控制器创建一个类吗?

来自分类Dev

iOS RSS Feed应用程序:我应该为每个视图控制器创建一个类吗?

来自分类Dev

一个简单的网络程序中的noclassdeffounderror。我正在使用Eclipse IDE运行Java程序

来自分类Dev

我试着做一个简单的应用程序让我的手机振动

来自分类Dev

我正在使用 django 创建一个社交网站,我是否应该创建一个电子邮件应用程序

来自分类Dev

我正在尝试创建一个简单的休眠应用程序。它给出了以下错误。如何解决该错误

来自分类Dev

我可以开发一个向导应用程序(顺序提交表单)吗?

来自分类Dev

为iPhone开发一个贴纸应用程序,我该在哪里存储图像

来自分类Dev

我想开发一个制作vAnimated视频的应用程序,该如何进行?

Related 相关文章

  1. 1

    如何使用 swift 为我的 iOS 应用程序创建一个简单的导航视图

  2. 2

    我正在开发一个用于求职的 android 应用程序。这里我使用 PHP 作为后端

  3. 3

    当我切换到另一个包含回收者视图的活动时,应用程序崩溃

  4. 4

    我想在 Play 商店安装的应用程序片段中创建一个列表视图

  5. 5

    我正在尝试使用路由使用angularjs创建一个简单的登录应用程序,但未处理事件

  6. 6

    我正在创建一个简单的应用程序,在该应用程序中,成功登录后我要从登录页面导航到起始页面

  7. 7

    我正在使用一个有另一个团队成员的应用程序

  8. 8

    我正在制作一个Android节拍器应用程序。但是,播放声音时程序停止

  9. 9

    我正在开发一个phonegap应用程序,但无法连接数据库,我已附加了以下程序?

  10. 10

    如何开发一个程序包以使用比我的应用程序更早版本的Guzzle?

  11. 11

    将主回收站视图从content_main移到我的res文件中的另一个布局后,应用程序崩溃

  12. 12

    我不想在使用另一个开发应用程序时打开我已经关闭的应用程序

  13. 13

    我正在尝试使用Android开发人员myfirstapp指南制作我的第一个android应用程序,但是我在MyActivity.jav文件中获取了所有红色标记。

  14. 14

    当我单击列表视图项时,应用程序崩溃,而不是打开另一个活动

  15. 15

    当我单击列表视图项时,应用程序崩溃,而不是打开另一个活动

  16. 16

    我正在创建一个简单的反向字符串android应用程序,请确认我前进的方式是否正确

  17. 17

    我正在构建一个 Windows 窗体应用程序。如何将我的应用程序中的所有数据网格视图收集到一个变量中?

  18. 18

    我可以在Ice Cream Sandwich 4.0.4上使用Webkit 537.36开发一个Android Web应用程序吗

  19. 19

    我正在用jQuery创建一个动画的flahscard应用程序。我从哪里开始?

  20. 20

    我正在kony one studio中开发一个应用程序,因此在哪里可以找到.apk文件?

  21. 21

    iOS RSS Feed应用程序:我应该为每个视图控制器创建一个类吗?

  22. 22

    iOS RSS Feed应用程序:我应该为每个视图控制器创建一个类吗?

  23. 23

    一个简单的网络程序中的noclassdeffounderror。我正在使用Eclipse IDE运行Java程序

  24. 24

    我试着做一个简单的应用程序让我的手机振动

  25. 25

    我正在使用 django 创建一个社交网站,我是否应该创建一个电子邮件应用程序

  26. 26

    我正在尝试创建一个简单的休眠应用程序。它给出了以下错误。如何解决该错误

  27. 27

    我可以开发一个向导应用程序(顺序提交表单)吗?

  28. 28

    为iPhone开发一个贴纸应用程序,我该在哪里存储图像

  29. 29

    我想开发一个制作vAnimated视频的应用程序,该如何进行?

热门标签

归档