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");
}
});
}
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;
}
}
}
}
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);
}
}
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);
}
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);
}
Aggregations