import net.ktnx.mobileledger.model.Data;
import net.ktnx.mobileledger.model.LedgerAccount;
+import java.util.List;
+
class AccountSummaryAdapter extends RecyclerView.Adapter<AccountSummaryAdapter.LedgerRowHolder> {
private boolean selectionActive;
}
public void onBindViewHolder(@NonNull LedgerRowHolder holder, int position) {
- LedgerAccount acc = Data.accounts.get().get(position);
- Context ctx = holder.row.getContext();
- Resources rm = ctx.getResources();
-
- holder.tvAccountName.setText(acc.getShortName());
- holder.tvAccountName.setPadding(
- acc.getLevel() * rm.getDimensionPixelSize(R.dimen.activity_horizontal_margin) / 2,
- 0, 0, 0);
- holder.tvAccountAmounts.setText(acc.getAmountsString());
-
- if (acc.isHidden()) {
- holder.tvAccountName.setTypeface(null, Typeface.ITALIC);
- holder.tvAccountAmounts.setTypeface(null, Typeface.ITALIC);
- }
- else {
- holder.tvAccountName.setTypeface(null, Typeface.NORMAL);
- holder.tvAccountAmounts.setTypeface(null, Typeface.NORMAL);
- }
+ List<LedgerAccount> accounts = Data.accounts.get();
+ if (position < accounts.size()) {
+ LedgerAccount acc = accounts.get(position);
+ Context ctx = holder.row.getContext();
+ Resources rm = ctx.getResources();
+
+ holder.row.setVisibility(View.VISIBLE);
+ holder.vTrailer.setVisibility(View.GONE);
+ holder.tvAccountName.setText(acc.getShortName());
+ holder.tvAccountName.setPadding(
+ acc.getLevel() * rm.getDimensionPixelSize(R.dimen.activity_horizontal_margin) /
+ 2, 0, 0, 0);
+ holder.tvAccountAmounts.setText(acc.getAmountsString());
+
+ if (acc.isHidden()) {
+ holder.tvAccountName.setTypeface(null, Typeface.ITALIC);
+ holder.tvAccountAmounts.setTypeface(null, Typeface.ITALIC);
+ }
+ else {
+ holder.tvAccountName.setTypeface(null, Typeface.NORMAL);
+ holder.tvAccountAmounts.setTypeface(null, Typeface.NORMAL);
+ }
- if (position % 2 == 0) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) holder.row
- .setBackgroundColor(rm.getColor(R.color.table_row_dark_bg, ctx.getTheme()));
- else holder.row.setBackgroundColor(rm.getColor(R.color.table_row_dark_bg));
+ if (position % 2 == 0) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) holder.row
+ .setBackgroundColor(rm.getColor(R.color.table_row_dark_bg, ctx.getTheme()));
+ else holder.row.setBackgroundColor(rm.getColor(R.color.table_row_dark_bg));
+ }
+ else {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) holder.row
+ .setBackgroundColor(rm.getColor(R.color.drawer_background, ctx.getTheme()));
+ else holder.row.setBackgroundColor(rm.getColor(R.color.drawer_background));
+ }
+
+ holder.selectionCb.setVisibility(selectionActive ? View.VISIBLE : View.GONE);
+ holder.selectionCb.setChecked(!acc.isHiddenToBe());
+
+ holder.row.setTag(R.id.POS, position);
}
else {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) holder.row
- .setBackgroundColor(rm.getColor(R.color.drawer_background, ctx.getTheme()));
- else holder.row.setBackgroundColor(rm.getColor(R.color.drawer_background));
+ holder.vTrailer.setVisibility(View.VISIBLE);
+ holder.row.setVisibility(View.GONE);
}
-
- holder.selectionCb.setVisibility(selectionActive ? View.VISIBLE : View.GONE);
- holder.selectionCb.setChecked(!acc.isHiddenToBe());
-
- holder.row.setTag(R.id.POS, position);
}
@NonNull
@Override
public int getItemCount() {
- return Data.accounts.get().size();
+ return Data.accounts.get().size() + 1;
}
public void startSelection() {
for (LedgerAccount acc : Data.accounts.get()) acc.setHiddenToBe(acc.isHidden());
CheckBox selectionCb;
TextView tvAccountName, tvAccountAmounts;
LinearLayout row;
+ View vTrailer;
public LedgerRowHolder(@NonNull View itemView) {
super(itemView);
- this.row = (LinearLayout) itemView;
+ this.row = itemView.findViewById(R.id.account_summary_row);
this.tvAccountName = itemView.findViewById(R.id.account_row_acc_name);
this.tvAccountAmounts = itemView.findViewById(R.id.account_row_acc_amounts);
this.selectionCb = itemView.findViewById(R.id.account_row_check);
+ this.vTrailer = itemView.findViewById(R.id.account_summary_trailer);
}
}
}
return inflater.inflate(R.layout.transaction_list_fragment, container, false);
}
@Override
+ public void onResume() {
+ super.onResume();
+ Log.d("flow", "TransactionListFragment.onResume()");
+ }
+ @Override
+ public void onStop() {
+ super.onStop();
+ Log.d("flow", "TransactionListFragment.onStop()");
+ }
+ @Override
+ public void onPause() {
+ super.onPause();
+ Log.d("flow", "TransactionListFragment.onPause()");
+ }
+ @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
Log.d("flow", "TransactionListFragment.onActivityCreated called");
super.onActivityCreated(savedInstanceState);
<!--
- ~ Copyright © 2018 Damyan Ivanov.
+ ~ Copyright © 2019 Damyan Ivanov.
~ This file is part of Mobile-Ledger.
~ Mobile-Ledger is free software: you can distribute it and/or modify it
~ under the term of the GNU General Public License as published by
~ along with Mobile-Ledger. If not, see <https://www.gnu.org/licenses/>.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/account_summary_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:minHeight="?attr/android:actionBarSize"
- android:orientation="horizontal"
- android:paddingStart="8dp"
- android:paddingEnd="8dp"
tools:showIn="@id/account_root">
- <CheckBox
- android:id="@+id/account_row_check"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:button="@drawable/checkbox_star_black" />
-
- <TextView
- android:id="@+id/account_row_acc_name"
- style="@style/account_summary_account_name"
- android:text="Account name, a really long one. A very very very long one. It may even spawn on more than two lines -- three, four or more." />
-
- <TextView
- android:id="@+id/account_row_acc_amounts"
- style="@style/account_summary_amounts"
- android:text="123,45\n678,90" />
-</LinearLayout>
\ No newline at end of file
+ <LinearLayout
+ android:id="@+id/account_summary_row"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ android:minHeight="?attr/android:actionBarSize"
+ android:orientation="horizontal"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+
+ <CheckBox
+ android:id="@+id/account_row_check"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:button="@drawable/checkbox_star_black" />
+
+ <TextView
+ android:id="@+id/account_row_acc_name"
+ style="@style/account_summary_account_name"
+ android:text="Account name, a really long one. A very very very long one. It may even spawn on more than two lines -- three, four or more."
+ tools:ignore="HardcodedText" />
+
+ <TextView
+ android:id="@+id/account_row_acc_amounts"
+ style="@style/account_summary_amounts"
+ android:text="123,45\n678,90"
+ tools:ignore="HardcodedText" />
+ </LinearLayout>
+
+ <View
+ android:id="@+id/account_summary_trailer"
+ android:layout_width="match_parent"
+ android:layout_height="80dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+</android.support.constraint.ConstraintLayout>
\ No newline at end of file