Я создал базу данных без имен и заполнил это поле из массива идентификатором через адаптер. Я сделал это для поддержки разных языков, меняя только имена в строковых ресурсах. Но я не рассматривал сортировку. Это была ошибка, потому что разные языки требуют разной сортировки.
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 по массиву?