继续接着昨天的来,昨天终于弄好了一个例子,但是那个没有点击事件, 需要自己添加,参照别人的例子,弄了个比较简单的,主要是改动myRecycleradatper.java中的部分.
增加如下的接口:
1
2
3
4
5
6
7
8
|
//增加一个静态的接口.
private
OnItemClickListener listener;
public
static
interface
OnItemClickListener {
void
onItemClick(View view ,
int
position);
}
public
void
setOnItemClickListener(OnItemClickListener listener) {
this
.listener = listener;
}
|
在onBindViewHolder中增加如下的代码
1
2
3
4
5
6
7
8
|
if
(listener !=
null
) {
holder.v.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
listener.onItemClick(v,position);
}
});
}
|
这就好了,是目前能找到的比较简洁的方法了.
在主界面中直接使用就可以了.如下:
1
2
3
4
5
6
|
recycleAdapter.setOnItemClickListener(
new
myRecycleradatper.OnItemClickListener() {
@Override
public
void
onItemClick(View view,
int
position) {
Log.e(
"constr"
,
" "
+ position);
}
});
|
观看点击后log.e的记录值.
自定义的数据适配器全部代码如下,供参照,虽然不好,但是能用,我也不知啥意思,以后慢慢理解吧:
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
63
64
65
66
67
|
public
class
myRecycleradatper extends RecyclerView.Adapter<myRecycleradatper.MyViewHolder> {
private
List<filelist> mDatas;
private
Context mContext;
private
LayoutInflater inflater;
//增加一个静态的接口.
private
OnItemClickListener listener;
public
static
interface
OnItemClickListener {
void
onItemClick(View view ,
int
position);
}
public
void
setOnItemClickListener(OnItemClickListener listener) {
this
.listener = listener;
}
public
myRecycleradatper(Context context, List<filelist> datas){
this
. mContext=context;
this
. mDatas=datas;
inflater=LayoutInflater.
from
(mContext);
}
@Override
public
int
getItemCount() {
return
mDatas.size();
}
@Override
public
MyViewHolder onCreateViewHolder(ViewGroup parent,
int
viewType) {
View view = inflater.inflate(R.layout.item_view,parent,
false
);
MyViewHolder holder=
new
MyViewHolder(view);
return
holder;
}
@Override
public
void
onBindViewHolder(MyViewHolder holder, final
int
position) {
filelist da=mDatas.
get
(position);
if
(position%2==0){
//holder.tv.setBackgroundColor(Color.BLUE);
holder.v.setBackgroundColor(Color.GRAY);
}
if
(listener !=
null
) {
holder.v.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
listener.onItemClick(v,position);
}
});
}
holder.tv.setText(da.getName());
holder.msg.setText(da.getZt());
}
class
MyViewHolder extends RecyclerView.ViewHolder{
TextView tv;
TextView msg;
View v;
public
MyViewHolder(View view) {
super(view);
tv=(TextView) view.findViewById(R.id.txt_xs);
msg=(TextView)view.findViewById(R.id.txt_msg);
v=view;
}
}
}
|