Skip to content

Commit ac0f295

Browse files
committed
remasure dimension on every dataset change and add OnBodyRowClickedListener
1 parent a0a5c44 commit ac0f295

File tree

4 files changed

+37
-16
lines changed

4 files changed

+37
-16
lines changed

DataTable/src/main/java/com/isolpro/library/datatable/DataTable.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class DataTable extends RelativeLayout {
2222

2323
private final View mainView;
2424
private DataTableAdapter dataTableAdapter;
25+
private OnBodyRowClickedListener onBodyRowClickedListener;
2526

2627
private TableLayout tlRowHeader, tlColumnHeader, tlBody;
2728

@@ -66,11 +67,6 @@ private void instantiate() {
6667

6768
private void initialize() {
6869
syncScrolling();
69-
70-
tlBody.post(() -> {
71-
remeasureBodyWithRowHeader();
72-
remeasureBodyWithColumnHeader();
73-
});
7470
}
7571

7672
private void syncScrolling() {
@@ -167,6 +163,8 @@ private void populateRowHeader(List<String> rowHeaderTexts) {
167163

168164
((TableRow) tlRowHeader.getChildAt(0)).addView(textView);
169165
}
166+
167+
tlBody.post(this::remeasureBodyWithRowHeader);
170168
}
171169

172170
private void populateColumnHeader(List<String> columnHeaderTexts) {
@@ -187,6 +185,8 @@ private void populateColumnHeader(List<String> columnHeaderTexts) {
187185

188186
tlColumnHeader.addView(tableRow);
189187
}
188+
189+
tlBody.post(this::remeasureBodyWithColumnHeader);
190190
}
191191

192192
private void populateBody(List<List<String>> bodyTextsList) {
@@ -195,14 +195,23 @@ private void populateBody(List<List<String>> bodyTextsList) {
195195
tlBody.removeAllViews();
196196

197197
for (List<String> bodyTexts : bodyTextsList) {
198-
tlBody.addView(dataTableAdapter.onCreateBodyView(bodyTexts));
198+
TableRow tr = dataTableAdapter.onCreateBodyView(bodyTexts);
199+
200+
tr.setOnClickListener(this::handleOnBodyRowClicked);
201+
202+
tlBody.addView(tr);
199203
}
200204
}
201205

206+
private void handleOnBodyRowClicked(View rowView) {
207+
if (onBodyRowClickedListener != null)
208+
onBodyRowClickedListener.onClicked((TableRow) rowView);
209+
}
210+
202211
public void setAdapter(DataTableAdapter dataTableAdapter) {
203212
this.dataTableAdapter = dataTableAdapter;
204213

205-
dataTableAdapter.setOnDatasetChangeListener((cornerText, rowHeaderTexts, columnHeaderTexts, bodyTextsList) -> {
214+
dataTableAdapter.setOnDatasetChangedListener((cornerText, rowHeaderTexts, columnHeaderTexts, bodyTextsList) -> {
206215
populateCorner(cornerText);
207216
populateRowHeader(rowHeaderTexts);
208217
populateColumnHeader(columnHeaderTexts);
@@ -222,5 +231,12 @@ public void setColumnHeaderBackgroundColor(int color) {
222231
tlColumnHeader.setBackgroundColor(color);
223232
}
224233

234+
public void setOnBodyRowClickedListener(OnBodyRowClickedListener onBodyRowClickedListener) {
235+
this.onBodyRowClickedListener = onBodyRowClickedListener;
236+
}
237+
238+
public interface OnBodyRowClickedListener {
239+
void onClicked(TableRow tableRow);
240+
}
225241

226242
}

DataTable/src/main/java/com/isolpro/library/datatable/DataTableAdapter.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
public abstract class DataTableAdapter {
1111

1212
protected final Context context;
13-
private OnDatasetChangeListener onDatasetChangeListener;
13+
private OnDatasetChangedListener onDatasetChangedListener;
1414

1515
public DataTableAdapter(Context context) {
1616
this.context = context;
1717

18-
notifyDatasetChange();
18+
notifyDatasetChanged();
1919
}
2020

2121
@NonNull
@@ -38,16 +38,16 @@ public DataTableAdapter(Context context) {
3838

3939
protected abstract List<List<String>> onPopulateBodyView();
4040

41-
public final void notifyDatasetChange() {
42-
if (onDatasetChangeListener != null)
43-
onDatasetChangeListener.exec(onPopulateCornerView(), onPopulateRowHeaderView(), onPopulateColumnHeaderView(), onPopulateBodyView());
41+
public final void notifyDatasetChanged() {
42+
if (onDatasetChangedListener != null)
43+
onDatasetChangedListener.exec(onPopulateCornerView(), onPopulateRowHeaderView(), onPopulateColumnHeaderView(), onPopulateBodyView());
4444
}
4545

46-
final void setOnDatasetChangeListener(OnDatasetChangeListener onDatasetChangeListener) {
47-
this.onDatasetChangeListener = onDatasetChangeListener;
46+
final void setOnDatasetChangedListener(OnDatasetChangedListener onDatasetChangedListener) {
47+
this.onDatasetChangedListener = onDatasetChangedListener;
4848
}
4949

50-
interface OnDatasetChangeListener {
50+
interface OnDatasetChangedListener {
5151
void exec(String cornerText, List<String> rowHeaderTexts, List<String> columnHeaderTexts, List<List<String>> bodyTextsList);
5252
}
5353
}

app/src/main/java/com/isolpro/datatablelibrary/ItemsDataTableAdapter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ protected TableRow onCreateBodyView(List<String> bodyTexts) {
5454
((TextView) tableRow.findViewById(R.id.website)).setText(bodyTexts.get(6));
5555
((TextView) tableRow.findViewById(R.id.subject)).setText(bodyTexts.get(7));
5656

57+
tableRow.setTag("1");
58+
5759
return tableRow;
5860
}
5961

app/src/main/java/com/isolpro/datatablelibrary/MainActivity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.isolpro.datatablelibrary;
22

33
import android.os.Bundle;
4+
import android.util.Log;
45

56
import androidx.appcompat.app.AppCompatActivity;
67

@@ -23,9 +24,11 @@ protected void onCreate(Bundle savedInstanceState) {
2324
dataTable.setRowHeaderBackgroundColor(getResources().getColor(R.color.white_10));
2425
dataTable.setColumnHeaderBackgroundColor(getResources().getColor(R.color.white_10));
2526

27+
dataTable.setOnBodyRowClickedListener(tableRow -> Log.e("onClicked----: ", (String) tableRow.getTag()));
28+
2629
dataTable.setAdapter(adapter);
2730

28-
adapter.notifyDatasetChange();
31+
adapter.notifyDatasetChanged();
2932
}
3033

3134
}

0 commit comments

Comments
 (0)