Как сортировать массивы, исключая сортировку базы данных - PullRequest
0 голосов
/ 10 октября 2019

Я создал базу данных без имен и заполнил это поле из массива идентификатором через адаптер. Я сделал это для поддержки разных языков, меняя только имена в строковых ресурсах. Но я не рассматривал сортировку. Это была ошибка, потому что разные языки требуют разной сортировки.

This is example how my table looks like:

    public interface NAMES extends BaseColumns {
        String TABLE = "names";
        String NAMES_ID = "_id";
        String COL_SEQ = "seq";
        String COL_NAMES = "name";
    }
    private static final String NAMES_CREATE_TABLE =
            "create table "
                    + NAMES.TABLE + " ("
                    + NAMES.NAMES_ID + " integer primary key autoincrement, "
                    + NAMES.COL_SEQ + " integer, "
                    + NAMES.COL_NAMES + " text" + ");";

Весь текст в столбце COL_NAMES имеет значение null.

This is method for populating recyclerview in Fragment

                 Cursor cursor = mDBAdapter.getNamesCursor();
                 if (cursor != null && cursor.getCount() > 0) {
                    adapter = new NamesAdapter(getContext(), cursor);
                    mRecyclerView.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                }

This is DBAdapter.class

    public Cursor getNamesCursor() {
        String orderBy = DBHelper.NAMES.COL_SEQ + " ASC";
        Cursor cursor = database.query(DBHelper.NAMES.TABLE,
                null, null, null, null, null, orderBy);
        cursor.moveToFirst();
        return cursor;
    }

This is some code of NamesAdaper.class extending CursorRecyclerAdaper

    private String[] names;

    public NamesRVAdapter(Context context, Cursor cursor) {
        super(cursor);
        mContext = context;
        mResources = context.getResources();
        names = mResources.getStringArray(R.array.names);
    }
    @Override
    public void onBindViewHolderCursor(final ViewHolder holder, Cursor cursor) {
        int sequence = cursor.getInt(cursor.getColumnIndex(DBHelper.NAMES.COL_SEQ));

        if (holder.tvNames != null) {
                holder.tvNames.setText(names[sequence]);
        }
        .
        .
        .
    }

There are example string resources

string en

       <string-array name="names">
            <!--id0--><item>Anastasia</item>
            <!--id1--><item>Jeanne</item>
            <!--id2--><item>Veronica</item>

string ru

       <string-array name="names">
            <!--id0--><item>Анастасия</item>
            <!--id2--><item>Вероника</item>
            <!--id1--><item>Жанна</item>

Итак, если я правильно задал вопрос, как я могу отсортировать recyclerView по массиву?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...