Stronnicowanie w Tabach ActionBara (Android)

0

Witam, chce zrobić projekt lecz mam problem z stworzeniem stronnicowania.
Np: Zakładka Facebook i w niej stronnicowanie a w stronach stronnicowania miałoby być ListFragment.
Ogólnie chciałbym żeby było wszystko na Fragmentach bez żadnych XML. Tylko Główne okno aplikacji na XMLu mam.

Ktoś ma pomysł jak to zrobić?

0

Nie wiem czy dobrze kminie:

  1. Chcesz stronicować zawartość listy? Dynamicznie ładować content?

  2. Zrobić nawigację na tabach?

0

Coś w tym stylu: http://scr.hu/182n/oulrg

1

Czyli TabLayout z ViewPager-em. Możesz zacząć od tego:
http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

Chyba, że źle zrozumiałem i chcesz miec Taby i w poszczególnych tabach kilka stron. Wtedy będzie chyba nawet prościej.
Zrobisz TabLayout, gdzie każdy tab będzie przywoływał odpowiedni Fragment natomiast we Fragmenatch zaimplementuj ViewPager, który w zależności od wybranej strony będzie ładował odpowiedni ListView.

0

Tak, chce Taby(Facebook itd), w tych tabach stronnicowanie, a na stronach ListView. Ale zamiast ListView można ListFragment? Oczywiście, strona z Tabami(facebook itd), jest na XMLu, a resztę chce bez XMLów bo wtedy zaśmiece całą apke. Takie coś dynamicznego chciałbym ;p Stronnicowanie chciałbym poprzez Swipeable, a te Taby poprzez naciskanie.

1

Tak jak napisał dbCooper. Dodatkowo, jeśli chcesz zrobić "płynne" przewijanie tabów jak np. w Google Play to użyj jeszcze https://github.com/astuetz/PagerSlidingTabStrip. Btw. taby w tabach? Uh, ugly ;)

1

Pamiętaj, że Fragment i View to dwie różne rzeczy. ListFragment rozszerza Fragment, hostuje i ułatwia korzystanie z ListView.

http://developer.android.com/reference/android/app/ListFragment.html

ListFragment hosts a ListView object that can be bound to different data sources

Możesz skorzystać z ListFragment oczywiście, wtedy prawdopodobnie zmieniając strony w ViewPager będziesz musiał do swojej Listy podpinać odpowiednie adaptery które będą jej podawać to co chcesz.

Pamietaj też że generalnie robiąc appke na Androida trzeba myśleć o "User Experience". Interfejs powinien być intuicyjny i przyjemny w użytkowaniu. Nie ma co za bardzo komplikować.

0

Jak będę mieć problemy to napisze od razu. Dzięki ;)

0

Taki problem:

12-29 12:26:25.468    1417-1417/pl.meetnet.rezigiusz E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
            at android.content.res.Resources.getResourceName(Resources.java:1653)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
            at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
            at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
            at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
            at android.view.View.measure(View.java:12723)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
            at android.view.View.measure(View.java:12723)
            at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1451)
            at android.view.View.measure(View.java:12723)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
            at android.view.View.measure(View.java:12723)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
            at android.view.View.measure(View.java:12723)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
            at android.view.View.measure(View.java:12723)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
            at android.view.View.measure(View.java:12723)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
            at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)

Dobra znalazłem błąd, problem leży w tym nie mogę dodać ViewPagera do Fragmentu:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        LinearLayout l = new LinearLayout(getActivity());
        ViewPager v = new ViewPager(getActivity());
        //CirclePageIndicator indicator = new CirclePageIndicator(getActivity());

        //v.setAdapter(new CirclePagerAdapter(getChildFragmentManager()));
        //indicator.setViewPager(v);

        //l.addView(v); -- JAK ODKOMENTUJE TO, sypie sie, robiłem także że zwracało samego ViewPagera bez Layouta ale tak samo wywala
        return l;
    }
0

Upewnij się czy ViewPager ma nadany id.

Edit: getActivity() w metodzie OnCreateView zwróci Ci null'a..

0

Nadałem ViewPagerowi ID, poprzez funckję:

public class RandomVID {
    private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);

    /**
     * Generate a value suitable for use in {@link #setId(int)}.
     * This value will not collide with ID values generated at build time by aapt for R.id.
     *
     * @return a generated ID value
     */
    public static int generateViewId() {
        for (;;) {
            final int result = sNextGeneratedId.get();
            // aapt-generated IDs have the high byte nonzero; clamp to the range under that.
            int newValue = result + 1;
            if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.
            if (sNextGeneratedId.compareAndSet(result, newValue)) {
                return result;
            }
        }
    }
}

Aplikacja sie uruchamia ale nie wyświetla nic :/ mimo że jest na niej ListFragment z Adapterem który działa bez stronnicowania

0

Mała uwaga, klasa view posiada metodę do generowania unikatowego id dla widoku: http://developer.android.com/reference/android/view/View.html#generateViewId()

0

No teraz mam inny problem, chce dynamicznie dodawać Row-y do ListView. Chodzi o to że chce żeby podczas przewijania listview ładowało z adresu "index.php?category=facebook&limit=30&start_index=0" do odpowiedniej kategorii. Dane z adresu są w JSON-ie i klase "Post" bby wklepywać do niej dane i później przekazuje do ArrayList<Post>.

1 użytkowników online, w tym zalogowanych: 0, gości: 1