-
Notifications
You must be signed in to change notification settings - Fork 237
/
Copy pathLinkedAdaptiveTableAdapter.java
150 lines (130 loc) · 3.82 KB
/
LinkedAdaptiveTableAdapter.java
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.cleveroad.adaptivetablelayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
/**
* {@inheritDoc}
* Common base class of common implementation for an {@link AdaptiveTableAdapter} that
* can be used in {@link AdaptiveTableLayout}.
*/
public abstract class LinkedAdaptiveTableAdapter<VH extends ViewHolder> implements AdaptiveTableAdapter<VH> {
protected boolean mIsRtl;
/**
* Set with observers
*/
@NonNull
private final List<AdaptiveTableDataSetObserver> mAdaptiveTableDataSetObservers = new ArrayList<>();
/**
* Need to throw item click action
*/
@Nullable
private OnItemClickListener mOnItemClickListener;
/**
* Need to throw long item click action
*/
@Nullable
private OnItemLongClickListener mOnItemLongClickListener;
@Override
@Nullable
public OnItemClickListener getOnItemClickListener() {
return mOnItemClickListener;
}
@Override
public void setOnItemClickListener(@Nullable OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
@Override
@Nullable
public OnItemLongClickListener getOnItemLongClickListener() {
return mOnItemLongClickListener;
}
@Override
public void setOnItemLongClickListener(@Nullable OnItemLongClickListener onItemLongClickListener) {
mOnItemLongClickListener = onItemLongClickListener;
}
@NonNull
public List<AdaptiveTableDataSetObserver> getAdaptiveTableDataSetObservers() {
return mAdaptiveTableDataSetObservers;
}
/**
* {@inheritDoc}
*
* @param observer the object that gets notified when the data set changes.
*/
@Override
public void registerDataSetObserver(@NonNull AdaptiveTableDataSetObserver observer) {
mAdaptiveTableDataSetObservers.add(observer);
}
/**
* {@inheritDoc}
*
* @param observer the object to unregister.
*/
@Override
public void unregisterDataSetObserver(@NonNull AdaptiveTableDataSetObserver observer) {
mAdaptiveTableDataSetObservers.remove(observer);
}
/**
* {@inheritDoc}
*/
@Override
public void notifyDataSetChanged() {
for (AdaptiveTableDataSetObserver observer : mAdaptiveTableDataSetObservers) {
observer.notifyDataSetChanged();
}
}
/**
* {@inheritDoc}
*
* @param rowIndex the row index
* @param columnIndex the column index
*/
@Override
public void notifyItemChanged(int rowIndex, int columnIndex) {
for (AdaptiveTableDataSetObserver observer : mAdaptiveTableDataSetObservers) {
observer.notifyItemChanged(rowIndex, columnIndex);
}
}
/**
* {@inheritDoc}
*
* @param rowIndex the row index
*/
@Override
public void notifyRowChanged(int rowIndex) {
for (AdaptiveTableDataSetObserver observer : mAdaptiveTableDataSetObservers) {
observer.notifyRowChanged(rowIndex);
}
}
/**
* {@inheritDoc}
*
* @param columnIndex the column index
*/
@Override
public void notifyColumnChanged(int columnIndex) {
for (AdaptiveTableDataSetObserver observer : mAdaptiveTableDataSetObservers) {
observer.notifyColumnChanged(columnIndex);
}
}
/**
* {@inheritDoc}
*/
@Override
public void notifyLayoutChanged() {
for (AdaptiveTableDataSetObserver observer : mAdaptiveTableDataSetObservers) {
observer.notifyLayoutChanged();
}
}
@Override
public void onViewHolderRecycled(@NonNull VH viewHolder) {
//do something
}
public boolean isRtl() {
return mIsRtl;
}
public void setRtl(boolean rtl) {
mIsRtl = rtl;
}
}