import android.database.sqlite.SQLiteDatabase;
import android.graphics.Typeface;
import android.os.AsyncTask;
-import androidx.annotation.NonNull;
-import androidx.appcompat.widget.AppCompatTextView;
-import androidx.recyclerview.widget.RecyclerView;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.StyleSpan;
import android.widget.TextView;
import net.ktnx.mobileledger.R;
+import net.ktnx.mobileledger.model.Data;
import net.ktnx.mobileledger.model.LedgerTransaction;
import net.ktnx.mobileledger.model.LedgerTransactionAccount;
import net.ktnx.mobileledger.model.TransactionListItem;
import java.util.GregorianCalendar;
import java.util.TimeZone;
+import androidx.annotation.NonNull;
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.recyclerview.widget.RecyclerView;
+
import static net.ktnx.mobileledger.utils.DimensionUtils.dp2px;
public class TransactionListAdapter extends RecyclerView.Adapter<TransactionRowHolder> {
- private String boldAccountName;
public void onBindViewHolder(@NonNull TransactionRowHolder holder, int position) {
TransactionListItem item = TransactionListViewModel.getTransactionListItem(position);
holder.vTrailer.setVisibility(View.GONE);
LedgerTransaction tr = item.getTransaction();
- // Log.d("transactions", String.format("Filling position %d with %d accounts", position,
+ // debug("transactions", String.format("Filling position %d with %d accounts", position,
// tr.getAccounts().size()));
TransactionLoader loader = new TransactionLoader();
- loader.execute(new TransactionLoaderParams(tr, holder, position, boldAccountName,
- item.isOdd()));
+ loader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
+ new TransactionLoaderParams(tr, holder, position, Data.accountFilter.getValue(),
+ item.isOdd()));
// WORKAROUND what seems to be a bug in CardHolder somewhere
// when a view that was previously holding a delimiter is re-purposed
@NonNull
@Override
public TransactionRowHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-// Log.d("perf", "onCreateViewHolder called");
+// debug("perf", "onCreateViewHolder called");
View row = LayoutInflater.from(parent.getContext())
.inflate(R.layout.transaction_list_row, parent, false);
return new TransactionRowHolder(row);
@Override
public int getItemCount() {
- return TransactionListViewModel.getTransactionCount() + 1;
- }
- public void setBoldAccountName(String boldAccountName) {
- this.boldAccountName = boldAccountName;
- }
- public void resetBoldAccountName() {
- this.boldAccountName = null;
+ return Data.transactions.size();
}
-
enum LoaderStep {HEAD, ACCOUNTS, DONE}
-
private static class TransactionLoader
extends AsyncTask<TransactionLoaderParams, TransactionLoaderStep, Void> {
@Override
LedgerTransaction tr = p[0].transaction;
boolean odd = p[0].odd;
- SQLiteDatabase db = MLDB.getReadableDatabase();
+ SQLiteDatabase db = MLDB.getDatabase();
tr.loadData(db);
publishProgress(new TransactionLoaderStep(p[0].holder, p[0].position, tr, odd));
int rowIndex = 0;
for (LedgerTransactionAccount acc : tr.getAccounts()) {
-// Log.d(c.getAccountName(), acc.getAmount()));
+// debug(c.getAccountName(), acc.getAmount()));
publishProgress(new TransactionLoaderStep(p[0].holder, acc, rowIndex++,
p[0].boldAccountName));
}
LedgerTransactionAccount acc = step.getAccount();
-// Log.d("tmp", String.format("showing acc row %d: %s %1.2f", rowIndex,
+// debug("tmp", String.format("showing acc row %d: %s %1.2f", rowIndex,
// acc.getAccountName(), acc.getAmount()));
String boldAccountName = step.getBoldAccountName();
holder.tableAccounts.getChildCount() - accCount);
}
-// Log.d("transactions",
+// debug("transactions",
// String.format("Position %d fill done", step.getPosition()));
}
}