All Projects → CaMnter → Easyrecyclerviewsidebar

CaMnter / Easyrecyclerviewsidebar

Licence: apache-2.0
🔍 Easy sidebar for Android RecyclerView (。>﹏<。)

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Easyrecyclerviewsidebar

SlideBar
SlideBar for Android 一个很好用的联系人字母快速索引
Stars: ✭ 47 (-90.77%)
Mutual labels:  contacts, sidebar
Spannedgridlayoutmanager
Android RecyclerView.LayoutManager that resizes and reorders views based on SpanSize
Stars: ✭ 492 (-3.34%)
Mutual labels:  recyclerview
Recyclerview Gallery
Recyclerview-Gallery:This library shows you a gallery using RecyclerView.
Stars: ✭ 420 (-17.49%)
Mutual labels:  recyclerview
Fake contacts
Create fake phone contacts, to do data-poisoning.
Stars: ✭ 459 (-9.82%)
Mutual labels:  contacts
Android Multipicker Library
Android Multipicker Library
Stars: ✭ 425 (-16.5%)
Mutual labels:  contacts
Dragdropswiperecyclerview
Kotlin Android library that extends RecyclerView to support gestures like drag & drop and swipe, among others. It works with vertical, horizontal and grid lists.
Stars: ✭ 469 (-7.86%)
Mutual labels:  recyclerview
Recyclerviewtemplate
One Template which solves all frequently used RecyclerViews Code Snippets
Stars: ✭ 404 (-20.63%)
Mutual labels:  recyclerview
Coder
Android Material Design 风格控件的学习及遇到的问题;Tablayout | 横向布局标签,TextInputLayout | 文字输入布局 ,FloatingActionButton | 悬浮按钮, CoordinatorLayout APPBarLayout CollapsingTabLayout实现折叠头布局,BottomSheetDialog | 底部对话框,Touch Feedback| 触摸反馈,Reveal Effect| 揭示效果,Curved motion | 曲线运动,Animated Vector Drawables | 矢量图片动画
Stars: ✭ 502 (-1.38%)
Mutual labels:  recyclerview
Theia Sticky Sidebar
Glues your website's sidebars, making them permanently visible while scrolling.
Stars: ✭ 489 (-3.93%)
Mutual labels:  sidebar
Tvrecyclerview
TvRecyclerView--针对TV端特性进行的适配与开发
Stars: ✭ 453 (-11%)
Mutual labels:  recyclerview
Androidwithkotlin
🚀 These are android sample projects which are written in Kotlin. It covers video streaming, mp3 player, sqlite, location services, custom camera, o-notifications, simple compass etc.
Stars: ✭ 447 (-12.18%)
Mutual labels:  recyclerview
Phonenumberkit
A Swift framework for parsing, formatting and validating international phone numbers. Inspired by Google's libphonenumber.
Stars: ✭ 4,362 (+756.97%)
Mutual labels:  contacts
Nestedrecyclerview
🔥Copied the homepage of taobao and jd.com, and realized the TAB ceiling effect through two-layer nesting RecyclerView .
Stars: ✭ 479 (-5.89%)
Mutual labels:  recyclerview
Flutter wechat
🔥🔥🔥 利用 Flutter 来高仿微信(WeChat) 7.0.0+ App,代码规范惊为天人、注释详解令人发指、细节处理精益求精、核心功能配备文档、接近98%还原度的原生App视觉体验。代码不多,注释多。(持续更新,敬请期待,欢迎Star和Fork…)
Stars: ✭ 421 (-17.29%)
Mutual labels:  contacts
Yasha
Kotlin-based modern RecyclerView rendering weapon
Stars: ✭ 494 (-2.95%)
Mutual labels:  recyclerview
Scrollingpagerindicator
Pager indicator inspired by Instagram. Lightweight and easy to set up.
Stars: ✭ 419 (-17.68%)
Mutual labels:  recyclerview
Recycler Fast Scroll
Provides fast scroll and section idexer for recycler view
Stars: ✭ 445 (-12.57%)
Mutual labels:  recyclerview
React Burger Menu
🍔 An off-canvas sidebar component with a collection of effects and styles using CSS transitions and SVG path animations
Stars: ✭ 4,544 (+792.73%)
Mutual labels:  sidebar
Androidribbon
🎀 The simple way to implement a beautiful ribbon with the shimmering on Android.
Stars: ✭ 502 (-1.38%)
Mutual labels:  recyclerview
Suspensionbar
A RecyclerView suspension bar implementation like Instagram
Stars: ✭ 494 (-2.95%)
Mutual labels:  recyclerview

EasyRecyclerViewSidebar


Easy sidebar for Android RecyclerView (。>﹏<。)

Language License Version SDK Download



Introduction

EasyRecyclerViewSidebar is a more convenient sidebar index column.

Not only can you load text, you can also load pictures.

You can also customize the floating View.



Gradle

dependencies {
	compile 'com.camnter.easyrecyclerviewsidebar:easyrecyclerviewsidebar:1.3'
}


Attributes

<declare-styleable name="EasyRecyclerViewSidebar">
    <attr name="easySidebarBackground" format="color" />
    <attr name="easySidebarFontColor" format="color" />
    <attr name="easySidebarTouchWrapArea" format="boolean" />
</declare-styleable>


Listener

You must implement the EasyRecyclerViewSidebar.OnTouchSectionListener .

  • In onTouchImageSection, using the EasyImageSection rendering images for You floating view .
  • In onTouchLetterSection, using the EasySection set letter for You floating view .

Also , you can see the SectionActivity of demo .

public interface OnTouchSectionListener {
    /**
     * On touch image section
     *
     * @param sectionIndex sectionIndex
     * @param imageSection imageSection
     */
    void onTouchImageSection(int sectionIndex, EasyImageSection imageSection);

    /**
     * On touch letter section
     *
     * @param sectionIndex sectionIndex
     * @param letterSection letterSection
     */
    void onTouchLetterSection(int sectionIndex, EasySection letterSection);
}


Easy to use

More details, you can see the xml of a demo

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.camnter.easyrecyclerview.widget.EasyRecyclerView
        android:id="@+id/section_rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <com.camnter.easyrecyclerviewsidebar.EasyRecyclerViewSidebar
        android:id="@+id/section_sidebar"
        android:layout_width="30dp"
        android:layout_height="fill_parent"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_gravity="center|end"/>

    <RelativeLayout
        android:id="@+id/section_floating_rl"
        android:layout_width="70dp"
        android:layout_height="60dp"
        android:layout_centerInParent="true"
        android:background="@drawable/show_float_bg"
        android:visibility="invisible">

        <com.camnter.easyrecyclerviewsidebar.EasyFloatingImageView
            android:id="@+id/section_floating_iv"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_centerInParent="true"
            android:visibility="invisible"/>

        <TextView
            android:id="@+id/section_floating_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textColor="#ff444444"
            android:textSize="23sp"
            android:visibility="invisible"/>

    </RelativeLayout>

</RelativeLayout>

EasyFloatingImageView Attributes

<declare-styleable name="EasyFloatingImageView">
    <attr name="easyFloatingImageType">
        <enum name="round" value="2601" />
        <enum name="circle" value="2602" />
    </attr>
    <attr name="easyFloatingBorderRadius" format="dimension" />
</declare-styleable>

setSections

private void initData() {
    this.adapter.setList(this.getData());
    this.adapter.notifyDataSetChanged();
    this.imageSidebar.setSections(this.adapter.getSections());
}

A sample implementation of getSections

@Override public List<EasySection> getSections() {
    this.resetSectionCache();

    int itemCount = getItemCount();
    if (itemCount < 1) return this.easySections;

    String letter;

    for (int i = 0; i < itemCount; i++) {
        Contacts contacts = this.getItem(i);
        letter = contacts.getHeader();
        int section = this.easySections.size() == 0 ? 0 : this.easySections.size() - 1;
        if (contacts.top) {
            if (i != 0) section++;
            this.positionOfSection.put(section, i);
            this.easySections.add(
                    new EasyImageSection(contacts.resId, this.getEasyImageSection(), i));
        } else {
            // A B C D E F ...
            if (section < this.easySections.size()) {
                EasySection easySection = this.easySections.get(section);
                if (easySection instanceof EasyImageSection) {
                    // last section = image section
                    this.easySections.add(new EasySection(letter));
                    section++;
                    this.positionOfSection.put(section, i);
                } else {
                    // last section = letter section
                    if (!this.easySections.get(section).letter.equals(letter)) {
                        this.easySections.add(new EasySection(letter));
                        section++;
                        this.positionOfSection.put(section, i);
                    }
                }
            } else if (section == 0) {
                this.easySections.add(new EasySection(letter));
                this.positionOfSection.put(section, i);
            }
        }
        this.sectionOfPosition.put(i, section);
    }
    return this.easySections;
}


Screenshots

Style Circle Round

No Images



License

  Copyright (C) 2016 CaMnter [email protected]

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].