用RecyclerView实现根据位置不同显示不同界面
在原来的基础上将LinearAdapter.java进行修改:
1 public class LinearAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
2 private Context mcontext;
3 private OnItemClickListener mlistener;
4 public LinearAdapter(Context context,OnItemClickListener listener){
5 this.mcontext=context;
6 this.mlistener=listener;
7 }
8 @NonNull
9 @Override
10 public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
11 if(viewType==2){
12 return new LinearViewHolder(LayoutInflater.from(mcontext).inflate(R.layout.layout_linear_item,parent,false));
13 }else{
14 return new LinearViewHolder2(LayoutInflater.from(mcontext).inflate(R.layout.layout_linear_item_2,parent,false));
15 }
16 }
17
18 @Override
19 public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder,int position) {
20 if(getItemViewType(position)==2){
21 ((LinearViewHolder)holder).textView.setText("大家好,我又来了hiahia");
22 }else{
23 ((LinearViewHolder2)holder).textView.setText("新年快乐!!");
24 }
25 holder.itemView.setOnClickListener(new View.OnClickListener() {
26 @Override
27 public void onClick(View view) {
28 //Toast.makeText(mcontext, "click...", Toast.LENGTH_SHORT).show();//第一种方法,如果加position的话就会标红,所以没加,具体原因还不知道
29 mlistener.onClick(position);//第二种方法,反正点击事件没起作用,还是算了吧不弄了
30 }
31 });//增加点击事件,这是第一种方法
32 }//这里原来是RecyclerView.ViewHolder,建立完LinearViewHolder class后要把它改成LinearAdapter.LinearViewHolder就可以了
33
34 public int getItemViewType(int position){
35 if(position%2==0){
36 return 2;//位置是偶数,返回2
37 }else {
38 return 1;//否则返回1
39 }
40 }
41
42 @Override
43 public int getItemCount() {
44 return 20;
45 }//设置有多少行
46
47 class LinearViewHolder extends RecyclerView.ViewHolder {
48 private TextView textView;
49 public LinearViewHolder(@NonNull View itemView) {
50 super(itemView);
51 textView=itemView.findViewById(R.id.tv_rtitle);
52 }
53 }
54
55 class LinearViewHolder2 extends RecyclerView.ViewHolder {
56 private TextView textView;
57 private ImageView imageView;
58 public LinearViewHolder2(@NonNull View itemView) {
59 super(itemView);
60 textView=itemView.findViewById(R.id.tv_rtitle);
61 imageView=itemView.findViewById(R.id.iv_jiqiren);
62 }
63 }
64
65 public interface OnItemClickListener{
66 void onClick(int pos);
67 }//点击事件的第二种方法,建立接口
68 }
然后创建另一个界面layout_linear_item_2.xml文件:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="match_parent"
3 android:layout_height="wrap_content"
4 android:orientation="vertical"
5 android:background="@color/white"
6 android:gravity="center">
7
8 <TextView
9 android:id="@+id/tv_rtitle"
10 android:layout_width="match_parent"
11 android:layout_height="50dp"
12 android:gravity="center"
13 android:textColor="@color/black"
14 android:textSize="20sp"/>
15
16 <ImageView
17 android:id="@+id/iv_jiqiren"
18 android:layout_width="wrap_content"
19 android:layout_height="wrap_content"
20 android:src="@drawable/jiqiren"/>
21 </LinearLayout>
最终效果图:
用RecyclerView实现根据位置不同显示不同界面的更多相关文章
- (原)python中matplot中获得鼠标点击的位置及显示灰度图像
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6182474.html 参考网址: http://matplotlib.org/examples/pyl ...
- (android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图
(android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图 http://www.cnblogs.com/macroxu-1982/archive/2011/09/13 ...
- PIE SDK元素位置和显示样式的修改
1功能简介 在数据的处理中会出现根据需求进行元素的位置和显示样式的修改,使元素的形状,空间位置得到改变,下面将介绍基于PIE SDK的元素位置和显示样式的修改. 2功能实现说明 2.1.1 实现思路及 ...
- [IOS NSUserDefaults]的使用:登陆后不再显示登录界面。
之前搜了好多地方都没找到实现“登陆后不再显示登录界面,而默认自动登录”的方法. 待我发现有种存储方式叫NSUserDefaults的时候,立马又感觉新技能get了. 简介: NSUserDefault ...
- vncserver和Ubuntu Xfce4远程桌面环境的配置,解决不显示图形界面
vncserver和Ubuntu Xfce4远程桌面环境的配置 参考的http://blog.163.com/thinki_cao/blog/static/8394487520130301453180 ...
- SharedPreference 存储小量数据,一般首次启动显示引导界面就用这个。
写://添加一个SharedPreference并传入数据SharedPreference sharedPreferences = getSharedPreferences("share_d ...
- 问题记录-Activity跳转后显示空白界面
前两天写一个简易安卓记事本,从主界面跳转到添加内容界面总是显示空白. 明明有setContentView xml文件在可视化开发环境下也正常显示.后经前辈指点,原来是复写onCreate函数时出现了问 ...
- WPF 显示初始化界面
今天在看<WPF编程宝典>时,看到了Application类,该类可以做很多事情,我认为比较实用的是显示初始化界面,因为之前有个项目在打开的时候要加载好多dll,非常耗时,让客户等的蛋疼, ...
- 直接拨号、将电话号码传入拨号程序、调用拨号程序、调用系统浏览器浏览网页、调用系统程序查看联系人、显示系统设置界面和显示Wi-Fi设置界面代码
直接拨号.将电话号码传入拨号程序.调用拨号程序.调用系统浏览器浏览网页.调用系统程序查看联系人.显示系统设置界面和显示Wi-Fi设置界面代码 拨打号码的代码如下: Intent callIntent= ...
随机推荐
- 集合框架-Map集合-TreeMap存储自定义对象
1 package cn.itcast.p8.treemap.demo; 2 3 4 import java.util.Iterator; 5 import java.util.Map; 6 impo ...
- Java安全之C3P0利用与分析
Java安全之C3P0利用与分析 目录 Java安全之C3P0利用与分析 写在前面 C3P0 Gadget http base C3P0.getObject() 序列化 反序列化 Class.forN ...
- python14day
昨日回顾 匿名函数:一句话函数 内置函数II 闭包: 内层函数对外层函数非全局变量的引用 一定存在于嵌套函数中 作用:保护数据安全,自由变量不会在内存中消失,而且全局还引用不到 今日内容 装饰器: 装 ...
- 学习Java第1天
今天所做的工作:1.了解Java语言的发展历史 2.安装了Eclipse软件 3.学习了Eclipse的基本使用方法 4.学习了Java基本输出语法 5.成功输出了helloworld 6.学习了Ja ...
- %r和%s的区别
理解%r和%s的区别 %r会重现所表达的对象,%s会将所有转成字符串 eg1: print('i am %s years old' % 22) print('i am %r years old' % ...
- AGC005 部分简要题解
E 首先注意到这个问题事实上非常复杂(两棵树上博弈),基础的转化无效,于是考虑简化情形. 手玩很多样例可以发现,似乎很容易出现无限循环的情况,进一步地,有观察: 若第一棵树上存在相邻点 \(u, v\ ...
- jvm与dvm两种虚拟机的不同
jvm : java虚拟机 sun dvm: dalvik虚拟机 google 区别: 1.基于的架构不同,jvm 基于栈架构,栈是位于内存上的一个空间,执行指令操作,需要 ...
- java创建一个子类对象是会调用父类的构造方法会不会创建父类
1.子类在创建实例后,类初始化方法会调用父类的初始化方法(除了Java.lang.Object类,因为java.lang.Object类没有父类),而这种调用会逐级追述,直到java.lang.Obj ...
- 枚举和注解@override、@Deprecated、@SuppressWarnings
一.枚举 简介: 1)枚举对应英文(enumeration,简写 enum) 2)枚举是一组常量的集合. 3)可以这里理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象. 实现方式: 1.自定 ...
- 手把手带你基于嵌入式Linux移植samba服务
摘要:Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 本文分享自华为云社区<嵌入式Linux下移植samba服务--<基于北斗和4G ca ...