Autore Topic: Navigazione (<precedente e successivo>) tra record con Realm  (Letto 180 volte)

Offline fabio.dnaweb

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung 19100
  • Sistema operativo:
    Windows 7
Navigazione (<precedente e successivo>) tra record con Realm
« il: 17 Febbraio 2016, 10:17:52 CET »
0
Salve ragazzi ho necessità di implementare una navigazione, nel mio fragment detail, tra record del tipo precedente e successivo.

In allegato un'immagine che illustra il risultato che vorrei ottenere.

Metodo che lancia il mio detail:

Codice (Java): [Seleziona]
lvCases.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        RealmCase realmCase = casesAdapter.getItem((int) id).toRealmObject();
        if (getArguments() != null && getArguments().getBoolean(Const.ARG_CASE_SELECTION, false)) {
            Intent intent = getActivity().getIntent();
            intent.putExtra(Const.ARG_CASE_ID, realmCase.getId());
            getActivity().setResult(Activity.RESULT_OK, intent);
            getActivity().finish();
            return;
        }

        startActivity(new Intent(getActivity(), ContainerActivity.class)
                .putExtra(Const.ARG_FRAGMENT_TYPE, ContainerActivity.FRAGMENT_TYPE_CASE)
                .putExtra(Const.ARG_CASE_ID, realmCase.getId())
                .putExtra(Const.ARG_TITLE, String.format(Const.FORMAT_CALENDAR_REF,
                        realmCase.getFieldTitle(), realmCase.getFieldDescription())));
    }
});

Codice del detail:

Codice (Java): [Seleziona]
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    RealmCase realmCase = fetchItem(mRealm);

    tabhost.setup(getActivity(), getChildFragmentManager(), R.id.fragment_body_container);

    Bundle args = new Bundle();
    args.putLong(Const.ARG_CASE_ID, realmCase.getId());
    args.putInt(Const.ARG_CONTACTS_TYPE, 0);
    args.putBoolean(Const.ARG_HIDE_TOOLBAR, true);
    args.putBoolean(Const.ARG_HIDE_FILTER_BAR, true);
    args.putBoolean(Const.ARG_HIDE_BOTTOMBAR, true);

    tabhost.getTabWidget().setDividerDrawable(null);

    tabhost.addTab(setIndicator(tabhost.newTabSpec("fragment_parties"), CaseTabs.PARTIES),
            IdentitiesListFragment.class, args);
    tabhost.addTab(setIndicator(tabhost.newTabSpec("fragment_appointments"), CaseTabs.APPOINTMENTS),
            AppointmentsListFragment.class, args);
    tabhost.addTab(setIndicator(tabhost.newTabSpec("fragment_tasks"), CaseTabs.TASKS),
            TasksListFragment.class, args);
    tabhost.addTab(setIndicator(tabhost.newTabSpec("fragment_activities"), CaseTabs.ACTIVITIES),
            ActivitiesListFragment.class, args);
    tabhost.addTab(setIndicator(tabhost.newTabSpec("fragment_documents"), CaseTabs.DOCUMENTS),
            DocumentsListFragment.class, args);

    if (mainToolbar != null) {
        if (getArguments() != null && getArguments().containsKey(Const.ARG_TITLE)) {
            String title = getArguments().getString(Const.ARG_TITLE);
            mainToolbar.setTitle(title);
        }

        mainToolbar.setOnMenuItemClickListener(this);
        mainToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity().finish();
            }
        });
    }
}

Metodo per caricare l'elemento corrente:
Codice (Java): [Seleziona]
private RealmCase fetchItem(Realm realm) {
    long caseId = getArguments().getLong(Const.ARG_CASE_ID);
    RealmQuery<RealmCase> query = realm.where(RealmCase.class);
    query.equalTo("id", caseId);
    RealmResults<RealmCase> result = query.findAll();
    return result.first();
}

Riuscite a darmi qualche dritta in merito?

Grazie