Search in sources :

Example 1 with Book

use of pri.weiqiang.liyujapanese.mvp.bean.dic.Book in project MyJapanese by 54wall.

the class LessonsFragment method initView.

@Override
public void initView() {
    mLeftMenu.setLayoutManager(new LinearLayoutManager(getActivity()));
    mRightMenu.setLayoutManager(new LinearLayoutManager(getActivity()));
    // 如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
    mLeftMenu.setHasFixedSize(true);
    mRightMenu.setHasFixedSize(true);
    mRightMenu.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            Log.e(TAG, "onScrolled start");
            super.onScrolled(recyclerView, dx, dy);
            if (recyclerView.canScrollVertically(1) == false) {
                // 无法下滑
                showHeadView();
                return;
            }
            View underView;
            if (dy > 0) {
                underView = mRightMenu.findChildViewUnder(headerLayout.getX(), headerLayout.getMeasuredHeight() + 1);
            } else {
                underView = mRightMenu.findChildViewUnder(headerLayout.getX(), 0);
            }
            if (underView != null && underView.getContentDescription() != null) {
                int position = Integer.parseInt(underView.getContentDescription().toString());
                Book menu = rightAdapter.getMenuOfMenuByPosition(position);
                if (leftClickType || !menu.getName().equals(headMenu.getName())) {
                    if (dy > 0 && headerLayout.getTranslationY() <= 1 && headerLayout.getTranslationY() >= -1 * headerLayout.getMeasuredHeight() * 4 / 5 && !leftClickType) {
                        // underView.getTop()>9
                        int dealtY = underView.getTop() - headerLayout.getMeasuredHeight();
                        headerLayout.setTranslationY(dealtY);
                    // Log.e(TAG, "onScrolled: "+headerLayout.getTranslationY()+"   "+headerLayout.getBottom()+"  -  "+headerLayout.getMeasuredHeight() );
                    } else if (dy < 0 && headerLayout.getTranslationY() <= 0 && !leftClickType) {
                        headerView.setText(menu.getName());
                        int dealtY = underView.getBottom() - headerLayout.getMeasuredHeight();
                        headerLayout.setTranslationY(dealtY);
                    // Log.e(TAG, "onScrolled: "+headerLayout.getTranslationY()+"   "+headerLayout.getBottom()+"  -  "+headerLayout.getMeasuredHeight() );
                    } else {
                        headerLayout.setTranslationY(0);
                        headMenu = menu;
                        headerView.setText(headMenu.getName());
                        for (int i = 0; i < mBookList.size(); i++) {
                            if (mBookList.get(i) == headMenu) {
                                leftAdapter.setSelectedNum(i);
                                break;
                            }
                        }
                        if (leftClickType)
                            leftClickType = false;
                        Log.e(TAG, "onScrolled: " + menu.getName());
                    }
                }
            }
            Log.e(TAG, "onScrolled end");
        }
    });
}
Also used : Book(pri.weiqiang.liyujapanese.mvp.bean.dic.Book) RecyclerView(androidx.recyclerview.widget.RecyclerView) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) LessonsFragmentView(pri.weiqiang.liyujapanese.mvp.view.dic.LessonsFragmentView) BindView(butterknife.BindView) TextView(android.widget.TextView) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView)

Example 2 with Book

use of pri.weiqiang.liyujapanese.mvp.bean.dic.Book in project MyJapanese by 54wall.

the class LessonsFragment method showHeadView.

private void showHeadView() {
    headerLayout.setTranslationY(0);
    View underView = mRightMenu.findChildViewUnder(headerView.getX(), 0);
    if (underView != null && underView.getContentDescription() != null) {
        int position = Integer.parseInt(underView.getContentDescription().toString());
        Book menu = rightAdapter.getMenuOfMenuByPosition(position + 1);
        headMenu = menu;
        headerView.setText(headMenu.getName());
        for (int i = 0; i < mBookList.size(); i++) {
            if (mBookList.get(i) == headMenu) {
                leftAdapter.setSelectedNum(i);
                break;
            }
        }
    }
}
Also used : Book(pri.weiqiang.liyujapanese.mvp.bean.dic.Book) LessonsFragmentView(pri.weiqiang.liyujapanese.mvp.view.dic.LessonsFragmentView) BindView(butterknife.BindView) TextView(android.widget.TextView) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView)

Example 3 with Book

use of pri.weiqiang.liyujapanese.mvp.bean.dic.Book in project MyJapanese by 54wall.

the class LeftMenuAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    // Log.e(TAG, "onBindViewHolder");
    Book mBook = mBookList.get(position);
    LeftMenuViewHolder viewHolder = (LeftMenuViewHolder) holder;
    viewHolder.mTvName.setText(mBook.getName());
    if (mSelectedNum == position) {
        viewHolder.mLlLeftItem.setSelected(true);
    } else {
        viewHolder.mLlLeftItem.setSelected(false);
    }
}
Also used : Book(pri.weiqiang.liyujapanese.mvp.bean.dic.Book)

Example 4 with Book

use of pri.weiqiang.liyujapanese.mvp.bean.dic.Book in project MyJapanese by 54wall.

the class LessonsFragmentModelImpl method getData.

@Override
public void getData(Consumer<List<Book>> consumer) {
    Disposable disposable = Observable.create(new ObservableOnSubscribe<List<Book>>() {

        @Override
        public void subscribe(ObservableEmitter<List<Book>> emitter) throws Exception {
            List<Book> list;
            list = DBManager.getInstance().getBooks();
            if (list == null) {
                emitter.onError(new Exception());
            } else {
                emitter.onNext(list);
            }
            emitter.onComplete();
        }
    }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(consumer);
    mCompositeDisposable.add(disposable);
}
Also used : Disposable(io.reactivex.disposables.Disposable) ObservableOnSubscribe(io.reactivex.ObservableOnSubscribe) Book(pri.weiqiang.liyujapanese.mvp.bean.dic.Book) ObservableEmitter(io.reactivex.ObservableEmitter)

Example 5 with Book

use of pri.weiqiang.liyujapanese.mvp.bean.dic.Book in project LiYuJapanese by 54wall.

the class LessonsFragmentModelImpl method getData.

@Override
public void getData(Consumer<List<Book>> consumer) {
    Disposable disposable = Observable.create(new ObservableOnSubscribe<List<Book>>() {

        @Override
        public void subscribe(ObservableEmitter<List<Book>> emitter) throws Exception {
            List<Book> list;
            list = DBManager.getInstance().getBooks();
            if (list == null) {
                emitter.onError(new Exception());
            } else {
                emitter.onNext(list);
            }
            emitter.onComplete();
        }
    }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(consumer);
    mCompositeDisposable.add(disposable);
}
Also used : Disposable(io.reactivex.disposables.Disposable) ObservableOnSubscribe(io.reactivex.ObservableOnSubscribe) Book(pri.weiqiang.liyujapanese.mvp.bean.dic.Book) ObservableEmitter(io.reactivex.ObservableEmitter)

Aggregations

Book (pri.weiqiang.liyujapanese.mvp.bean.dic.Book)10 View (android.view.View)4 TextView (android.widget.TextView)4 RecyclerView (androidx.recyclerview.widget.RecyclerView)4 BindView (butterknife.BindView)4 LessonsFragmentView (pri.weiqiang.liyujapanese.mvp.view.dic.LessonsFragmentView)4 Cursor (android.database.Cursor)2 SQLiteDatabase (android.database.sqlite.SQLiteDatabase)2 LinearLayoutManager (androidx.recyclerview.widget.LinearLayoutManager)2 ObservableEmitter (io.reactivex.ObservableEmitter)2 ObservableOnSubscribe (io.reactivex.ObservableOnSubscribe)2 Disposable (io.reactivex.disposables.Disposable)2 Lesson (pri.weiqiang.liyujapanese.mvp.bean.dic.Lesson)2