স্প্যানসাইজলুকআপ ব্যবহার করে গ্রিডলাউটম্যানেজারে আইটেমগুলির জন্য স্প্যান সেট করুন


91

আমি বিভাগ শিরোনাম সহ গ্রিডের মতো লেআউটটি প্রয়োগ করতে চাই। চিন্তা করুন https://github.com/TonicArtos/StickyGridHeaders

আমি এখন কি করব:

mRecyclerView = (RecyclerView) view.findViewById(R.id.grid);
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                switch(mAdapter.getItemViewType(position)){
                    case MyAdapter.TYPE_HEADER:
                        return 1;
                    case MyAdapter.TYPE_ITEM:
                        return 2;
                    default:
                        return -1;
                }
            }
        });

mRecyclerView.setLayoutManager(mLayoutManager);

এখন নিয়মিত আইটেম এবং শিরোনাম উভয়েরই স্প্যান আকার size. আমি কীভাবে এটি সমাধান করব?


এই বাস্তবায়ন আমার কাছে সঠিক দেখাচ্ছে। আপনি যদি mAdapter.getItemViewType(position)সঠিক মানটি ফিরিয়ে দিচ্ছেন তবে আপনি কি ডিবাগ করেছেন ?
ইজিগিত

4
"1" "-1" এর চেয়ে নিরাপদ ডিফল্ট মান বলে মনে হচ্ছে।
ব্লেডকডার

উত্তর:


160

সমস্যাটি হ'ল হেডারটির স্প্যান আকার 2 টি হওয়া উচিত এবং নিয়মিত আইটেমটির স্প্যান আকার 1 হওয়া উচিত So সুতরাং সঠিক বাস্তবায়নটি হ'ল:

mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                switch(mAdapter.getItemViewType(position)){
                    case MyAdapter.TYPE_HEADER:
                        return 2;
                    case MyAdapter.TYPE_ITEM:
                        return 1;
                    default:
                        return -1;
                }
            }
        });

14
স্প্যান আকার পান পদ্ধতিটি আপনার সেলটি যে পরিমাণ স্প্যান প্রস্থে যাচ্ছে সেগুলি নির্ধারণ করে যে কর্ন সারির সংখ্যাটি নেওয়া উচিত নয়!
কার্তিক আরকে

4
প্রথম আইটেমটি যখন বিস্তৃত হয়, তখন এটি পরেরগুলির উচ্চতা বিশৃঙ্খলা করে। এটি অন্য যে কোনও আইটেমে কাজ করে। কোন ধারণা ?
রনি শিবলি

4
আপনি উপরে বর্ণিত ইস্যুটির জন্য @ রনিশিবলি কোনও সমাধান করুন ... আমিও একই সমস্যার মুখোমুখি হচ্ছি, শিরোনামটি শিরোনামের পরে প্রথম আইটেমটি দেখায় না, অন্যরা সবাই যেমন প্রয়োজন হিসাবে প্রদর্শিত হয়
উমাইর

এটা জাগ্রত হয় না।
মাহদী

34

পুরো তালিকার স্প্যান গণনা সমান শিরোনামের স্প্যান থাকা উচিত।

mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
    @Override
    public int getSpanSize(int position) {
           switch(mAdapter.getItemViewType(position)){
                    case MyAdapter.TYPE_HEADER:
                        return mLayoutManager.getSpanCount();
                    case MyAdapter.TYPE_ITEM:
                        return 1;
                    default:
                        return -1;
                }
    }
});

2

আমার নিজের প্রশ্নের উত্তর: অ্যাডাপ্টার সেট করার পরে ক্রিয়াকলাপ থেকে getSpanSizeLookup () ওভাররাইড করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.