- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详解分别用Kotlin和java写RecyclerView的示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文介绍了分别用Kotlin和java写RecyclerView的示例,分享给大家,具体如下:
java:跟一般的写法一样,增加了按钮响应 。
MainActivity:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
public
class
MainActivity
extends
AppCompatActivity
implements
RecyclerAdapter.OnItemClickListener{
private
RecyclerView mRecyclerView;
private
RecyclerView.LayoutManager mLayoutManager;
private
RecyclerAdapter mRecyclerAdapter;
private
ArrayListlist;
@Override
protected
void
onCreate(Bundlesaved InstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerItem item;
list =
new
ArrayList<>();
item =
new
RecyclerItem();
item.setName(
"No."
+
0
);
list.add(item);
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerAdapter =
new
RecyclerAdapter(
this
,list);
mRecyclerAdapter.setOnItemClickListener(
this
);
// 竖直方向的网格样式,每行一个Item
mLayoutManager=
new
GridLayoutManager(
this
,
3
,OrientationHelper.VERTICAL,
false
);
// 设置布局管理器
mRecyclerView.setLayoutManager(mLayoutManager);
// 设置adapter
mRecyclerView.setAdapter(mRecyclerAdapter);
// 设置Item添加和移除的动画
mRecyclerView.setItemAnimator(newDefaultItemAnimator());
}
//adapter的按钮点击事件
@Override
public
void
onItemContentClick(Viewview,intposition) {
//点击最后一个按钮增加一个item
if
(position == list.size()-
1
) {
RecyclerItemitem=newRecyclerItem();
item.setName(
"No."
+(position+
1
));
list.add(
0
,item);
//更新RecyclerView
mRecyclerAdapter.updateData(list);
}
else
{
Toast.makeText(
this
,
"No."
+position,Toast.LENGTH_SHORT).show();
}
}
}
|
Adapter:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
public
class
RecyclerAdapter
extends
RecyclerView.Adapter{
private
ArrayList mData;
private
Context mContext;
private
OnItemClickListener onItemClickListener;
public
void
setOnItemClickListener(OnItemClickListener listener) {
this
.onItemClickListener = listener;
}
public
RecyclerAdapter(Context mContext,ArrayList mData){
this
.mData = mData;
this
.mContext = mContext;
}
//刷新整个list
public
void
updateData(ArrayList data) {
this
.mData = data;
notifyDataSetChanged();
}
//刷新局部list
public
void
updateDataItem(ArrayList data,
int
itemnm) {
this
.mData = data;
notifyItemChanged(itemnm);
}
@Override
public
View Holder onCreateViewHolder(ViewGroup parent,
int
viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item, parent,
false
);
ViewHolder viewHolder =
new
ViewHolder(v);
return
viewHolder;
}
@Override
public
void
onBindViewHolder(
final
ViewHolder holder,
int
position) {
holder.btn.setText(mData.get(position).getName());
holder.btn.setOnClickListener(newView.OnClickListener() {
@Override
public
void
onClick(View v) {
if
(onItemClickListener !=
null
) {
int
pos = holder.getLayoutPosition();
onItemClickListener.onItemContentClick(holder.itemView, pos);
}
}
});
}
@Override
public
int
getItemCount() {
return
mData ==
null
?
0
: mData.size();
}
public
static
class
ViewHolder
extends
RecyclerView.ViewHolder{
Button btn;
public
ViewHolder(View itemView) {
super
(itemView);
btn = itemView.findViewById(R.id.recycle_name);
}
}
public
interface
OnItemClickListener{
void
onItemContentClick(View view,
int
position);
}
}
|
RecyclerItem
1
2
3
4
5
6
7
8
|
public
class
RecyclerItem{
String name;
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
|
activity_main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<
android.support.v7.widget.RecyclerView
xmlns:app
=
"http://schemas.android.com/apk/res-auto"
xmlns:tools
=
"http://schemas.android.com/tools"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
"com.tudou.recycleviewdemo.MainActivity"
>
<
android.support.v7.widget.RecyclerView
android:id
=
"@+id/recyclerView"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:background
=
"#00000000"
android:paddingBottom
=
"5dip"
>
</
android.support.v7.widget.RecyclerView
>
</
android.support.constraint.ConstraintLayout
>
|
recycler_item
1
2
3
4
5
6
7
8
9
10
11
|
<
RelativeLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:layout_width
=
"100dp"
android:layout_height
=
"100dp"
>
<
Button
android:id
=
"@+id/recycle_name"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_centerInParent
=
"true"
android:text
=
"No.1"
/>
</
RelativeLayout
>
|
Kotlin:语法略有不同,recyclerview调用类似 。
MainActivity:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
class
MainActivity : AppCompatActivity(), MainAdapter.ItemClick{
val items : MutableList = ArrayList()
var mainAdapter : MainAdapter ?=
null
override fun onCreate(savedInstanceState:Bundle?) {
super
.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//添加一个item
var item : RecyclerItem
item = RecyclerItem()
item.name =
"No."
+
0
items.add(item)
val recyclerView = findViewById(R.id.recyclerView) as RecyclerView
recyclerView.layoutManager = GridLayoutManager(
this
,
3
, OrientationHelper.VERTICAL,
false
)
mainAdapter=MainAdapter(items,
this
)
mainAdapter!!.setItemClickListener(
this
)
recyclerView.adapter = mainAdapter
recyclerView.itemAnimator = DefaultItemAnimator()
}
//adapter的按钮点击事件
override fun OnItemClick(v : View, position : Int) {
if
(position == items.size -
1
) {
val item = RecyclerItem()
item.name =
"No."
+ (position +
1
)
items.add(
0
, item)
//更新数据
mainAdapter!!.updateData(items)
}
else
{
Toast.makeText(
this
,items.get(position).name, Toast.LENGTH_SHORT).show()
}
}
}
|
MainAdapter:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
class
MainAdapter : RecyclerView.Adapter{
var items : List? =
null
var context : Context ?=
null
var itemClick : ItemClick ?=
null
constructor(items : List, context : Context){
this
.items = items
this
.context = context
}
fun setItemClickListener(itemClick : ItemClick){
this
.itemClick = itemClick
}
fun updateData(items : List){
this
.items = items
notifyDataSetChanged()
}
override fun onBindViewHolder(holder : ViewHolder?, position : Int) {
var name=items!!.get(position).name
if
(holder !=
null
) {
holder.textName.setText(name)
holder.textName.setOnClickListener(View.OnClickListener{
if
(itemClick !=
null
) {
itemClick!!.OnItemClick(holder.itemView, position)
}
})
}
}
override fun getItemCount():Int{
return
items!!.size
}
override fun onCreateViewHolder(parent : ViewGroup?, viewType : Int) : ViewHolder{
val v = LayoutInflater.from(parent!!.context).inflate(R.layout.recycler_item, parent,
false
) as RelativeLayout
val holder = ViewHolder(v)
return
holder
}
class
ViewHolder(itemView : View?) : RecyclerView.ViewHolder(itemView) {
var textName : TextView = itemView!!.findViewById(R.id.recycle_name) as TextView
}
interface
ItemClick{
fun OnItemClick(v : View, position : Int);
}
}
|
RecyclerItem:
1
2
3
4
5
|
class
RecyclerItem{
var name : String =
""
get
set
}
|
activity_main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<
android.support.constraint.ConstraintLayout
xmlns:app
=
"http://schemas.android.com/apk/res-auto"
xmlns:tools
=
"http://schemas.android.com/tools"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
"com.tudo.kotlintdemo.MainActivity"
>
<
android.support.v7.widget.RecyclerView
android:id
=
"@+id/recyclerView"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:background
=
"#00000000"
android:paddingBottom
=
"5dip"
>
</
android.support.v7.widget.RecyclerView
>
</
android.support.constraint.ConstraintLayout
>
|
recycler_item
1
2
3
4
5
6
7
8
9
10
11
|
<
RelativeLayout
>
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="100dp">
<
Button
android:id
=
"@+id/recycle_name"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_centerInParent
=
"true"
android:text
=
"No.1"
/>
</
RelativeLayout
>
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://www.jianshu.com/p/a255bd3d5da6 。
最后此篇关于详解分别用Kotlin和java写RecyclerView的示例的文章就讲到这里了,如果你想了解更多关于详解分别用Kotlin和java写RecyclerView的示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Sample data for IPv6? 除了 wireshark 在其网站上提供的内容之外,是否有可以下
我正在寻找可以集成到现有应用程序中并使用多拖放功能的示例或任何现成的解决方案。我在互联网上找到的大多数解决方案在将多个项目从 ListBox 等控件拖放到另一个 ListBox 时效果不佳。谁能指出我
我是 GATE Embedded 的新手,我尝试了简单的示例并得到了 NoClassDefFoundError。首先我会解释我尝试了什么 在 D:\project\gate-7.0 中下载并提取 Ga
是否有像 Eclipse 中的 SWT 示例那样的多合一 JFace 控件示例?搜索(在 stackoverflow.com 上使用谷歌搜索和搜索)对我没有帮助。 如果它是一个独立的应用程序或 ecl
我找不到任何可以清楚地解释如何通过 .net API(特别是 c#)使用谷歌计算引擎的内容。有没有人可以指点我什么? 附言我知道 API 引用 ( https://developers.google.
最近在做公司的一个项目时,客户需要我们定时获取他们矩阵系统的数据。在与客户进行对接时,提到他们的接口使用的目前不常用的BASIC 认证。天呢,它好不安全,容易被不法人监听,咋还在使用呀。但是没办法呀,
最近在做公司的一个项目时,客户需要我们定时获取他们矩阵系统的数据。在与客户进行对接时,提到他们的接口使用的目前不常用的BASIC 认证。天呢,它好不安全,容易被不法人监听,咋还在使用呀。但是没办法呀,
我正在尝试为我的应用程序设计配置文件格式并选择了 YAML。但是,这(显然)意味着我需要能够定义、解析和验证正确的 YAML 语法! 在配置文件中,必须有一个名为 widgets 的集合/序列。 .这
你能给我一个使用 pysmb 库连接到一些 samba 服务器的例子吗?我读过有类 smb.SMBConnection.SMBConnection(用户名、密码、my_name、remote_name
linux服务器默认通过22端口用ssh协议登录,这种不安全。今天想做限制,即允许部分来源ip连接服务器。 案例目标:通过iptables规则限制对linux服务器的登录。 处理方法:编
我一直在寻找任何 PostProjectAnalysisTask 工作代码示例,但没有看。 This页面指出 HipChat plugin使用这个钩子(Hook),但在我看来它仍然使用遗留的 Po
我发现了 GWT 的 CustomScrollPanel 以及如何自定义滚动条,但我找不到任何示例或如何设置它。是否有任何示例显示正在使用的自定义滚动条? 最佳答案 这是自定义 native 滚动条的
我正在尝试开发一个 Backbone Marionette 应用程序,我需要知道如何以最佳方式执行 CRUD(创建、读取、更新和销毁)操作。我找不到任何解释这一点的资源(仅适用于 Backbone)。
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题?通过 editing this post 添加详细信息并澄清问题. 去年关闭。 Improve this
我需要一个提交多个单独请求的 django 表单,如果没有大量定制,我找不到如何做到这一点的示例。即,假设有一个汽车维修店使用的表格。该表格将列出商店能够进行的所有可能的维修,并且用户将选择他们想要进
我有一个 Multi-Tenancy 应用程序。然而,这个相同的应用程序有 liquibase。我需要在我的所有数据源中运行 liquibase,但是我不能使用这个 Bean。 我的应用程序.yml
我了解有关单元测试的一般思想,并已在系统中发生复杂交互的场景中使用它,但我仍然对所有这些原则结合在一起有疑问。 我们被警告不要测试框架或数据库。好的 UI 设计不适合非人工测试。 MVC 框架不包括一
我正在使用 docjure并且它的 select-columns 函数需要一个列映射。我想获取所有列而无需手动指定。 如何将以下内容生成为惰性无限向量序列 [:A :B :C :D :E ... :A
$condition使用说明和 $param在 findByAttributes在 Yii 在大多数情况下,这就是我使用 findByAttributes 的方式 Person::model()->f
我在 Ubuntu 11.10 上安装了 qtcreator sudo apt-get install qtcreator 安装的版本有:QT Creator 2.2.1、QT 4.7.3 当我启动
我是一名优秀的程序员,十分优秀!