lcodecorex / TwinklingRefreshLayout

RefreshLayout that support for OverScroll and better than iOS. 支持下拉刷新和上拉加载的RefreshLayout,自带越界回弹效果,支持RecyclerView,AbsListView,ScrollView,WebView
Apache License 2.0
4k stars 672 forks source link

当reyclerview的初始数据list为空的话,调用startRefresh后,onRefresh会调用两次? #32

Closed fjzboy closed 7 years ago

fjzboy commented 7 years ago

调用startRefresh以后,当reyclerview的adapter初始数据list为空的时候,onRefresh会调用两次?

lcodecorex commented 7 years ago

@fjzboy 只会调用一次啊

fjzboy commented 7 years ago

前提是,recyclerview的adapter数据初始化为空的情况下,调用startRefresh

fjzboy commented 7 years ago

public class TwinklingRefreshLayoutDemo extends AppCompatActivity {

public static final String TAG = "TRL";

TwinklingRefreshLayout trl;
RecyclerView rv;
MyAdapter adapter;
private List<String> data = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_twinkling_refresh_layout_demo);

    initViews();
}

private void initViews() {

    rv = (RecyclerView) findViewById(R.id.recyclerview);

    rv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
    adapter = new MyAdapter(this);
    adapter.setData(data);
    rv.setAdapter(adapter);

    trl = (TwinklingRefreshLayout) findViewById(R.id.twinklingrefreshlayout);
    trl.setOnRefreshListener(new RefreshListenerAdapter() {
        @Override
        public void onRefresh(TwinklingRefreshLayout refreshLayout) {
            Log.e(TAG, "on refresh");

        }

        @Override
        public void onLoadMore(TwinklingRefreshLayout refreshLayout) {
            super.onLoadMore(refreshLayout);
            Log.e(TAG, "on loadmore");
        }
    });
    trl.post(new Runnable() {
        @Override
        public void run() {
            trl.startRefresh();
        }
    });
}

class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private List<String> data;
    private Context context;
    private LayoutInflater inflater;

    public MyAdapter(Context context) {
        inflater = LayoutInflater.from(context);
    }

    public void setData(List<String> data) {
        this.data = data;
        notifyDataSetChanged();
    }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.list_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.tv.setText(data.get(position));
    }

    @Override
    public int getItemCount() {
        return data.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder{

        public TextView tv;

        public ViewHolder(View itemView) {
            super(itemView);
            tv = (TextView) itemView.findViewById(R.id.tv);
        }
    }
}

logcat========================= 12-19 13:45:08.870 6340-6340/com.fjz.realmdemo I/Adreno-EGL: : EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_3.2_RB2.04.03.00.129.089_msm8226_JB_3.2_RB2__release_AU () OpenGL ES Shader Compiler Version: 20.00.06 Build Date: 01/10/14 Fri Local Branch: Remote Branch: quic/jb_3.2_rb2.29 Local Patches: NONE Reconstruct Branch: AU_LINUX_ANDROID_JB_3.2_RB2.04.03.00.129.089 + 34003a1 + 1a137f0 + 98832c1 + 2658875 + 7343c38 + 43aba8a + 71f5907 + 66b09cf + 384bdc7 + b4d63d2 + 6719424 + f8007d6 + 548d2de + 2efa45c + d770c46 + 8cdb15b + NOTHING 12-19 13:45:08.910 6340-6340/com.fjz.realmdemo D/OpenGLRenderer: Enabling debug mode 0 12-19 13:45:08.980 6340-6340/com.fjz.realmdemo E/TRL: on refresh 12-19 13:45:09.160 6340-6340/com.fjz.realmdemo E/TRL: on refresh 12-19 13:45:21.250 6340-6347/com.fjz.realmdemo D/dalvikvm: null clazz in OP_INSTANCE_OF, single-stepping

lcodecorex commented 7 years ago

@fjzboy 不好意思,现在电脑出了点问题。我稍晚一些查下问题,给你答复

fjzboy commented 7 years ago

好的,多谢

timshinlee commented 7 years ago

我好像也碰到这种情况了,打日志会接收到两次数据

lcodecorex commented 7 years ago

疏忽了。小问题。还有其它几个小问题一起修复之后会发布一个紧急发布的版本。感谢反馈!

lcodecorex commented 7 years ago

@fjzboy @timshinlee 问题已解决

fjzboy commented 7 years ago

thank you~~~