关于RecyclerView的进一步使用和Menu的使用以及基于回调的接口监听事件
首先跟着老师复习了通过RecyclerView和RecyclerView.Adapter来实现ListView、GridView的方式
基本写法就不放了,肯定是先创建内部Holder类,然后是重写三个方法。以及通过Adapter类的构造方法来传递参数。
最后通过LineLayoutManager或者GridViewManager类来设置布局以及列数。
后来跟着老师学会了菜单的构建,这里需要注意,重写方法之后默认的菜单是生存在ActionBar也就是默认的标题栏,这里给出路径
然后是menu的xml文件的配置。上次我们在使用底部导航栏的时候就已经用到了,这里再放送一下。
这里的item是我们菜单的子条目,当然也可以嵌套使用,在item标签内部再次添加menu标签和item标签
id是唯一标识,在活动的重写方法中调用,titie就是我们菜单的名字。
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.my_first_menu,menu); return super.onCreateOptionsMenu(menu); } //该方法用于处理菜单按钮的点击事件 @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { return super.onOptionsItemSelected(item); }
这里简单解释一下两个方法,第一个方法inflate的作用类似于findViewById 用来得到我们的menu文件,然后赋值给menu 最后添加到我们的ActionBar上面
第二个方法用于处理菜单按钮的点击事件,通过item.getId()方法可以获得我们menu.xml文件里面item的id,然后执行相应的代码。
还学习到了抽取一个基类Adapter,这个和我在学习JavaWeb时重写一个抽象的BaseServlet类有异曲同工之妙,都是省去了重复的工作,因为今天太困了,明天写一份代码再发。
最后学到的一个东西叫做基于回调的监听事件处理(大概是这么说吧 。
先说一下关于ListView和RecyclerView吧。
首先我们可以通过ListView对象来setOnItemClickListener来给我们每一个元素设置监听事件,具体代码如下所示:
ListView listView = new ListView(this); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } });
但是RecyclerView并没有为我们提供这样一种方式。我们把对RecyclerView控件的一切操作都交给了Recycler.Adapter,所以我们在适配器里面去写接口和setonItemClick方法
然后在活动中通过adapter对象来调用set方法,然后由我们的适配器类来接收这个接口的实现类对象。
接着我们给每一个元素添加点击事件,注意这里的元素是我们的View类对象,也就是item.xml所对应的View对象可以获取到里面的子控件,
然后给View设置点击监听事件,在onClick方法里面通过我们的实现接口的对象来执行从活动传来的重写方法里面的代码,这个流程是非常值得我们学习的。
最后推荐一位老师,叫程序员拉大锯,应该算是我在B站学习历程以来听过最好的课了,大家可以去听一听,知识本来就是用来分享的嘛~
希望能一起进步吧!