Cleveroad / Cleveroad/AdaptiveTableLayout
Table not updating with multiple textviews in item_card
- Langage dominant
- Java
- Étoiles
- 1.9k
- Forks
- 238
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Hello,
I've wanted to display a table with 4 TextViews per item, but the table isn't getting updated when I use my modified version of EditItemDialog(to support the 4 TVs I mentioned above).
The data in the csv gets updated immediately, also if I switch to another fragment and back to the table-fragment, the data's displayed correctly!
How can I fix that?
Code handling EditItemDialog response(GH is bugging...):
`
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == EditItemDialog.REQUEST_CODE_EDIT_ITEM && resultCode == Activity.RESULT_OK && data != null) {
int columnIndex = data.getIntExtra(EditItemDialog.EXTRA_COLUMN_NUMBER, 0);
int rowIndex = data.getIntExtra(EditItemDialog.EXTRA_ROW_NUMBER, 0);
String s = data.getStringExtra(EditItemDialog.EXTRA_SUBJECT);
String t = data.getStringExtra(EditItemDialog.EXTRA_TEACHER);
String r = data.getStringExtra(EditItemDialog.EXTRA_ROOM);
// My attempts to update the layout:
mCsvFileDataSource.updateItem(rowIndex, columnIndex,
CsvFileDataSourceImpl.prepItem(s, t, r));
mTableAdapter.notifyItemChanged(rowIndex, columnIndex);
mTableLayout.notifyItemChanged(rowIndex, columnIndex);
mCsvFileDataSource.applyChanges(getLoaderManager(),
mTableLayout.getLinkedAdapterRowsModifications(),
mTableLayout.getLinkedAdapterColumnsModifications(),
mTableLayout.isSolidRowHeader(),
ScheduleFragment.this);
mTableLayout.setVisibility(View.GONE);
mTableLayout.setVisibility(View.VISIBLE);
//mTableLayout.invalidate();
onFileUpdated(StorageUtils.getScheduleFile(getActivity()).getAbsolutePath(), true); // .getScheduleFile() returns File object
}
}
`
`
public static String prepItem(String s, String t, String r) {
return s + ";" + t + ";" + r;
}
//...
public String getItemData(int rowIndex, int columnIndex, int position) { // helper method for schedule, splits item and returns data at position's index
try {
List rowList = getRow(rowIndex);
return (rowList == null ? "" : rowList.get(columnIndex)).split(";")[position];
} catch (Exception e) {
Log.e(TAG, "get rowIndex=" + rowIndex + "; colIndex=" + columnIndex + "; position:" + position + "\ncache = " +
mItemsCache.toString(), e);
return null;
}
}
`
Best regards,
Felipe
PS: Except for above issue, it works like a charm!
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par suivre onActivityResult dans le fragment Schedule, y compris les appels à mTableAdapter, mTableLayout et onFileUpdated, puis examinez comment getItemData répartit la valeur CSV mise à jour entre les quatre TextViews. Le travail est terminé lorsqu’un élément modifié actualise immédiatement tous les TextViews affichés sans changer de fragment, tandis que les données CSV restent à jour.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- android, java
- Domaine
- mobile
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100