Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

功能添加建议收集 #500

Closed
CymChad opened this issue Nov 9, 2016 · 83 comments
Closed

功能添加建议收集 #500

CymChad opened this issue Nov 9, 2016 · 83 comments

Comments

@CymChad
Copy link
Owner

CymChad commented Nov 9, 2016

仅限于功能新增提议,使用过程中遇到的问题可以参考#906

@CymChad CymChad changed the title 功能新增 功能添加建议收集 Nov 9, 2016
@CymChad CymChad mentioned this issue Nov 9, 2016
@tatsuyuki25
Copy link

應該不算功能
但我覺得滿有用的東西
希望能加個 CHANGE LOG
在裡面寫一些個版本間的差異等等
這樣在判斷是否要進版會比較有好

@BinarySatan
Copy link

希望添加一个 下拉刷新~, 最好可以让用户可以自定义, 把滑动距离,状态什么的回传出来.

@CymChad
Copy link
Owner Author

CymChad commented Nov 14, 2016

@CymChad
Copy link
Owner Author

CymChad commented Nov 14, 2016

下拉刷新单纯用adapter是无法实现的,推荐使用 https://github.com/anzaizai/EasyRefreshLayout

@zxy198717
Copy link

是否可以考虑一种方式,来添加RecyclerView上下多出的可拉距离, 类似于iOS UITableView的contentInset.

@CymChad
Copy link
Owner Author

CymChad commented Nov 15, 2016

这个库主要是Adapter不是RecyclerView,所以不会考虑对RecyclerView做一些定制的东西

@dyamail
Copy link

dyamail commented Nov 17, 2016

setEmptyView 开始设置有用 后来在去setEmptyView就不管用 需要从新 setAdapter才能强制显示 这样挺浪费性能的 望群主 有时间优化下 开源万岁 谢谢了

@loganguo
Copy link

loganguo commented Nov 18, 2016

setEmptyView 开始设置有用 后来在去setEmptyView就不管用 需要从新 setAdapter才能强制显示

遇到了同样的问题,

  1. 开始设置的是
    mQuickAdapter.setEmptyView(mLoadingView);
  2. 数据加载完成后,当列表为空时,设置显示为
   mQuickAdapter.setEmptyView(mEmptyView);
   mQuickAdapter.notifyItemChanged(0);

但是mEmptyView却显示不去来,显示的仍然是mLoadingView。
3. 如果网络连接异常,导致加载失败

    getQuickAdapter().setEmptyView(mErrorView);
    getQuickAdapter().notifyItemChanged(0);

mErrorView可以正常显示出来。

所以很奇怪,都是调用的setEmptyView方法,为什么1,2不可以显示,而1,3缺可以显示。请问如何解决2中的问题呢?

另一个问题是,调用空页面的逻辑块应该加上mSwipeRefreshLayout.setRefreshing(false);方法,否则刷新的动画不会消失。

Update

使用@dyamail说的,

需要从新 setAdapter才能强制显示

确实解决了。但是重新setAdapter确实不好,代码逻辑也有点乱。

@sweet2o09
Copy link

能否在Demo中增加一个单选/多选效果展示?,多选跟单选也是比较常用的列表形式

@CymChad
Copy link
Owner Author

CymChad commented Nov 18, 2016

@loganguo 由于RecyclerView缓存机制,目前只能切换两种布局

@CymChad
Copy link
Owner Author

CymChad commented Nov 18, 2016

后续会优化

@CymChad
Copy link
Owner Author

CymChad commented Nov 19, 2016

compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.6.1' 已经更新了 @loganguo @dyamail

@loganguo
Copy link

@CymChad 切换多种布局的优化已经发布到2.6.1了是吗?

@CymChad
Copy link
Owner Author

CymChad commented Nov 21, 2016

恩 是的,setEmptyView 可以切换多种布局

@xubuhang
Copy link

左滑出菜单

@tysheng
Copy link
Contributor

tysheng commented Nov 25, 2016

首先这是一个很棒的项目,有一个建议如下:

关于最新的loadmore(2.6.+)

看了一下,是在getItemViewType中遍历,也就是说不判断是否占满一页,这种做法对于小数据不太友好,比如说一个搜索列表,可能只返回一两个数据,用户还没滑动的时候自动去执行loadmore了,导致setnewdata之后迅速地loadend。

能否把关于loadmore的public出来,让开发者决定是否在adapter里操作还是recyclerview里操作.

@loganguo
Copy link

@tysheng 我也遇到了这个问题。#541

@tysheng
Copy link
Contributor

tysheng commented Nov 25, 2016

@luoganguo 我想了个折中的办法,复写setNewData();

 @Override
    public void setNewData(List<T> data) {
        super.setNewData(data);
        setEnableLoadMore(false);
    }

我的用是rxjava,加载完后 判断是否满足一页,若满足 再开启。

  @Override
                    public void onTerminate() {
                        super.onTerminate();
                        if (mSwipeRefreshLayout != null)
                            mSwipeRefreshLayout.setRefreshing(false);
                        if (type == REFRESH) {
                            mRecyclerView.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    if ((mLayoutManager.findLastCompletelyVisibleItemPosition() + 1) != mAdapter.getItemCount()) {
                                        mAdapter.setEnableLoadMore(true);
                                    }
                                }
                            }, 50);
                        }
                    }

@hongtaoStudio
Copy link

建议把 ErrorViewEmptyView 拆分为两个模块,根据目前提供的 API 只能反复调用 setEmptyView() 以达到效果,避免反复调用 removeAllViewsaddView 方法

@BTFTUK
Copy link

BTFTUK commented Nov 30, 2016

请问有暴露position的方法吗,我没找到,没有的话希望暴露一个谢谢

@CymChad
Copy link
Owner Author

CymChad commented Nov 30, 2016

@BTFTUK 文档有写

@roger66
Copy link

roger66 commented Jan 17, 2017

@CymChad 好的,谢谢

@Biswangluo
Copy link

viewhodler.getLayoutPosition(); 如果添加过头的话 位置会错一位 能否提供一个真实的Position的方法

@CymChad
Copy link
Owner Author

CymChad commented Jan 25, 2017

@Biswangluo 原理就是头部也算一个item。你可以
holder.getLayoutPosition() - getHeaderLayoutCount()
在上层给具体数据的时候就是这样处理的

convert(holder, mData.get(holder.getLayoutPosition() - getHeaderLayoutCount()));

@sj8521123
Copy link

长按拖动的时候,能不能给拖动的item设置一个动画效果,现在只是会震动,

@AndyLeeBlue
Copy link

AndyLeeBlue commented Feb 23, 2017

这个库的功能非常强大!先赞一个。提个想法,我想应该是所有初次使用这个库的新手都会有的问题:项目的demo工程体积太大,逻辑关系纵横交叉形成了一个强耦合的大项目,但是初次接触这个库的大多数人只想快速使用其中一个或几个功能,因此若将大一统的demo分成若干以单一功能为目的的几个小demo工程会更让人易懂,更易引入到自己的项目中来。另外大一统的demo用AndroidStudio打开编译需要非常非常非常长的时间,我等了半个小时后无奈的关掉,只能一个个的打开文件看,在代码级别剔除自己不需要的功能,找到需要的功能,很麻烦。虽然分几个小demo工作量对于库开发者有很多重复的地方,但是我想是值得的。最后谢谢你们!

@LittleHans8
Copy link

是否考虑出一个正式版本?确定下 调用方法名或者类名;不然有时候一个版本的更新就导致项目里其他代码也要随之改变。

@JueShouGitHub
Copy link

建议,添加一个测滑菜单功能,很多时候会用到这个功能。

@Joyce1991
Copy link

建议在BaseViewHolder的getView里面对属于复用的view加一个tag标识一下

public <T extends View> T getView(int viewId) {
        View view = views.get(viewId);
        if (view == null) {
            view = convertView.findViewById(viewId);
            views.put(viewId, view);
        }
        view.setTag(R.id.recycer_resue, true);
        return (T) view;
    }

原因是我在recycleview(A)中嵌套了recycleview(B),并且B中使用了addItemDecoration,如果B是属于复用的话就不能再调用'addItemDecoration'(这个方法效果会叠加)

@CymChad
Copy link
Owner Author

CymChad commented Mar 1, 2017

@LittleHans8 恩,下次我们会优化文档。

@CymChad
Copy link
Owner Author

CymChad commented Mar 1, 2017

@AndyLeeBlue 构建慢,可能是gradle版本问题,你可以把gradle配置改成你自己项目的gradle版本。

@CymChad
Copy link
Owner Author

CymChad commented Mar 1, 2017

@JueShouGitHub 这个是属于item的功能,而不是adapter的功能,考虑到耦合的问题,所以没有加入。

@CymChad
Copy link
Owner Author

CymChad commented Mar 1, 2017

@Joyce1991 如果加上了setTag,你会如何处理你说的问题呢?

@Lans
Copy link

Lans commented Mar 7, 2017

左滑删除?像ios那样的效果

@slimvan
Copy link

slimvan commented Mar 8, 2017

@tysheng 自动LoadMore 有别的处理方法吗

@qstumn
Copy link

qstumn commented Mar 13, 2017

BaseMultiItemQuickAdapter 希望增加展开/折叠全部功能,很多页面的需求都是上来全部展开的,希望能考虑一下,就比如这样的展开全部效果
int addedCound;
int nextPosition = 0;
do {
addedCound = mAdapter.expand(nextPosition);
nextPosition += addedCound + 1;
} while (addedCound != 0);

@tysheng
Copy link
Contributor

tysheng commented Mar 14, 2017

2.8.6已经建议在Adapter内部持有 RecyclerView 对象了,既然这样的话,何不提供一个方法
类似

    public void bindToRecyclerView(RecyclerView recyclerView) {
        if (mRecyclerView != null) {
            throw new RuntimeException("Don't bind twice");
        }
        mRecyclerView = recyclerView;
        mRecyclerView.setAdapter(this);
    }

在初始化的时候就持有recyclerview,
对之后的 设置empty view等一系列方法都可以免去传一个viewgroup的实例

 checkNotNull();
        View v = LayoutInflater.from(mRecyclerView.getContext()).inflate(R.layout.item_layout_loading, mRecyclerView, false);
        setEmptyView(v);

同时建议向子类提供get recyclerview的方法

@CymChad

@CymChad
Copy link
Owner Author

CymChad commented Mar 14, 2017

@tysheng 恩,不错的建议,可以的。

@CymChad
Copy link
Owner Author

CymChad commented Mar 14, 2017

@qstumn 收到

@Kotlin2022
Copy link

Kotlin2022 commented Mar 24, 2017

希望可以集成网络图片加载(Glide、ImageLoader、picasso、fresco等)

@Kotlin2022
Copy link

希望添加INVISIBLE 功能

/**
* Set a view visibility to INVISIBLE
*
* @param viewId The view id.
* @return The BaseViewHolder for chaining.
*/
public BaseViewHolder setInVisible(int viewId) {
View view = getView(viewId);
view.setVisibility(View.INVISIBLE);
return this;
}

@Kotlin2022
Copy link

希望添加 setFocusable 、setClickable 方法

@CymChad
Copy link
Owner Author

CymChad commented Mar 24, 2017

@Android-KJY 感谢你的建议,加载网络图片这一块需要开发者自己加载,因为考虑到实战项目中都有自己的图片加载库,如果封装在里面就耦合了,不能强迫所有的开发者都使用框架内置的图片加载库,所以在使用的代码块里面,我们可以看到它是通过一个getView的方法拿到imageView对象再去通过自己的常用图片加载框架去做相应的图片加载。

@CymChad
Copy link
Owner Author

CymChad commented Mar 24, 2017

@Android-KJY 我们现在提供了自定义ViewHolder,你可以自定义一个然后任意添加你需要的方法,因为如果无限的添加方法,这个BaseViewHolder就会无限大。

@CymChad
Copy link
Owner Author

CymChad commented Mar 24, 2017

这个issues楼层过高,加载速度慢了,我重新开个issues。

@liao10108180
Copy link

群主,啥时候能出类似手机通讯录列表的功能呀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests