Подключение готовой БД через RecyclerViewAdapter

429
26 ноября 2016, 19:18

Здравствуйте!

У меня есть готовая БД, содержимое этой БД я хочу вывести в качестве списка через RecyclerViewAdapter. Я так понимаю, что в RecyclerViewAdapter я должен прописать конструктор который передаст в адаптер данные из БД, а MainActivity запросит этот конструктор у RecyclerViewAdapter и выведет его в своем макете. Каким образом мне реализовать это, привожу основные фрагменты кода.

(MainActivity)

    public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {
RecyclerView mRecyclerView;
RecyclerView.Adapter mAdapter;
RecyclerView.LayoutManager mLayoutManager;
private Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    mLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(mLayoutManager);
    mAdapter = new RecyclerViewAdapter(СЮДА НУЖНО ПЕРЕДАТЬ КОНСТРУКТОР ИЗ АДАПТЕРА);
    mRecyclerView.setAdapter(mAdapter);
}

(RecyclerViewAdapter)

    class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

(Здесь нужно прописать конструктор, который получит данные из бд, затем данные прописать в onBindViewHolder)

@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext()).inflate(
            R.layout.card_items, parent, false);
    return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
    viewHolder.nameHeadsRu.setText(AR_NAME[position]);
    viewHolder.nameHeadsAr.setText(RU_NAME[position]);
    viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(v.getContext(), HeadsActivity.class);
            intent.putExtra(HeadsActivity.Extra_Names, position);
            v.getContext().startActivity(intent);
        }
    });
}
@Override
public int getItemCount() {
    return AR_NAME.length;
}
static class ViewHolder extends RecyclerView.ViewHolder {
    CardView cardView;
    TextView nameHeadsRu;
    TextView nameHeadsAr;
    ViewHolder(final View itemView) {
        super(itemView);
        cardView = (CardView) itemView.findViewById(R.id.cardView);
        nameHeadsRu = (TextView) itemView.findViewById(R.id.nameHAr);
        nameHeadsAr = (TextView) itemView.findViewById(R.id.nameHRu);
    }
}

}

(Метод получения данных из БД)

      TheNameOfDatabaseHelper myDbHelper = new TheNameOfDatabaseHelper(MainActivity.this);
    try {
        myDbHelper.createDataBase();
    } catch (IOException ioe) {
        throw new Error("Не удалось создать базу данных");
    }
    myDbHelper.openDataBase();
    cursor = myDbHelper.query("M_TABLE", new String[] {"_id", "AR_NAME", "RU_NAME"}, null, null, null, null, null);

        CursorAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1,
                cursor, new String[]{"AR_NAME", "RU_NAME"}, new int[]{android.R.id.text1}, 0);
        listHeads.setAdapter(listAdapter);
    }

(Решил проблему) нашел на гитхабе простой пример использования базы данных и вывод списка данных через recyclerview. Создал класс с переменной, конструктор этого класса прописал в recyclerview адаптере, а данные класса прописал в классе получения данных с бд.

READ ALSO
Управление checkbox&#39;ом в listView. JavaFX

Управление checkbox'ом в listView. JavaFX

Добрый деньНачал изучать JavaFX

335
Как задать шрифт в RecyclerAdapter

Как задать шрифт в RecyclerAdapter

Как установить шрифт для Textview из assets/font ?

268
Сгладить линию графика

Сгладить линию графика

Использую библиотеку XChart от knownЕсли кто то пользовался данной библиотекой подскажите, какой метод или какая константа отвечает за сглаживания...

261