Cleveroad / AdaptiveTableLayout

Library that makes it possible to read, edit and write CSV files
MIT License
1.9k stars 234 forks source link

Table not updating with multiple textviews in item_card #30

Open felipekaisersoft opened 6 years ago

felipekaisersoft commented 6 years ago

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<String> 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!

samiazar commented 5 years ago

I still have this issue, how do you work out with this problem?

vyguera commented 4 years ago

Possible duplicate of #36. If so is fixed on pull request #41