YoKeyword / IndexableRecyclerView

A RecyclerView with indexable, sticky and many other features.
Apache License 2.0
1.33k stars 240 forks source link

有点绝望 大神在吗 根本找不到问题啊,数据模型是完全有的适配器也设置了不报错也有些地方无法调试 #32

Closed qssq666123 closed 7 years ago

qssq666123 commented 7 years ago

以及搞了1个小时了这样下去我想放弃了

qssq666123 commented 7 years ago
 indexableLayout = (IndexableLayout) findViewById(R.id.indexablelayout);
        indexableLayout.setCompareMode(IndexableLayout.MODE_ALL_LETTERS);
        indexableLayout.setOverlayStyle_MaterialDesign(Color.RED);
        adapter = new SingerIndexAdapter();
// 排序过程是异步的 另有setDatas(mDatas,IndexCallback callback)  // callback在datas异步排序结束后回调

// 另有setOnItemTitleClickListener(listener),点击TitleItem点击事件以及LongClick
        adapter.setOnItemContentClickListener(new IndexableAdapter.OnItemContentClickListener<SingerModel>() {
            @Override
            public void onItemClick(View v, int originalPosition, int currentPosition, SingerModel entity) {
                ToastUtils.showToast("点击了" + entity);
            }
        });
        indexableLayout.setAdapter(adapter);
        queryData(Urls.SINGER_LIST, true, new NetQuestTask.SimpleRequestDataListener<String>() {
            @Override
            public void onSuccess(String str) {
                JSONObject jsonObject = JSON.parseObject(str);
                List<SingerModel> models = JSON.parseArray(jsonObject.getString(Constants.MODEL_KEY), SingerModel.class);
                adapter.setDatas(models, new IndexableAdapter.IndexCallback<SingerModel>() {
                    @Override
                    public void onFinished(List<EntityWrapper<SingerModel>> datas) {
                        Log.d(TAG, "DATAS" + datas);

                    }
                });
            }

            @Override
            public void onFail(String str) {
                Log.d(TAG, "QUERY FAIL " + str);
            }
        });
qssq666123 commented 7 years ago
    @JSONField(serialize = false)
    private String string;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getFansnum() {
        return fansnum;
    }

    public void setFansnum(int fansnum) {
        this.fansnum = fansnum;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getFace() {
        return face;
    }

    public void setFace(String face) {
        this.face = face;
    }

    private int id;// "3105",
    private int fansnum;// "0"
    private String nickname;// "吴芊仪",
    private String title;// "深圳大学金钟音乐学院",
    private String face;// "http;////api.buyao.tv/user/201702/20170206120853.jpg",

    @Override
    public String getFieldIndexBy() {
        return nickname;
    }

    @Override
    public void setFieldIndexBy(String indexField) {
        this.nickname=indexField;
    }

    @Override
    public void setFieldPinyinIndexBy(String pinyin) {
        string =pinyin;
    }
qssq666123 commented 7 years ago

大神啥时候上线啊,我快气吐血了,搞半天没看出问题,主要的就是那个回调断点无效,根本没法找问题

YoKeyword commented 7 years ago

你贴的代码 没有看到调用 adapter.setDatas(mDatas, IndexCallback)的代码;

Demo正常的话,比对下Demo的使用方式; 以及确保用的最新版本

qssq666123 commented 7 years ago

@YoKeyword 有调用呀 queryData 回调里面 ,确实回调了,我发誓。但是 问题 是页面空白,以及 您代码execute回调无法断点,只能追踪到那里,所以 我搞了1个小时放弃了,求大神指点指点到底哪里问题。看不到问题真的很头大 我是jcenter下载的 直接把arr,以及souce.jar全部下载了indexablerecyclerview-1.0.9.aar

qssq666123 commented 7 years ago
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="true"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <me.yokeyword.indexablerv.IndexableLayout
        android:id="@+id/indexablelayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:indexBar_background="#ff0"
        app:indexBar_layout_width="24dp"
        app:indexBar_selectedTextColor="#f33737"
        app:indexBar_textColor="#000000"
        app:indexBar_textSize="14sp"
        app:indexBar_textSpace="6dp"></me.yokeyword.indexablerv.IndexableLayout>
</LinearLayout>
qssq666123 commented 7 years ago
/**
 * Created by 情随事迁(qssq666@foxmail.com) on 2017/2/7.
 */

public class SingerIndexAdapter extends IndexableAdapter<SingerModel> {

    @Override
    public RecyclerView.ViewHolder onCreateTitleViewHolder(ViewGroup parent) {
        return new SingerIndexHeadViewHolder(LayoutInflater.from(AppContext.getInstance()).inflate(R.layout.view_item_singer_index_head, parent, false));
    }

    @Override
    public SingerIndexViewHolder onCreateContentViewHolder(ViewGroup parent) {
        return new SingerIndexViewHolder(LayoutInflater.from(AppContext.getInstance()).inflate(R.layout.view_item_singer_index, parent, false));
    }

    @Override
    public void onBindTitleViewHolder(RecyclerView.ViewHolder holder, String indexTitle) {
        SingerIndexHeadViewHolder headViewHolder = (SingerIndexHeadViewHolder) holder;
        headViewHolder.tvTitle.setText(indexTitle);
    }

    @Override
    public void onBindContentViewHolder(RecyclerView.ViewHolder holder, SingerModel entity) {
        SingerIndexViewHolder holder1 = (SingerIndexViewHolder) holder;
        holder1.tvFansCount.setText("" + entity.getFansnum());
        holder1.tvName.setText("" + entity.getNickname());
        ImageLoader.getInstance().displayImage(entity.getFace(), holder1.ivHead, ImageUtil.getOptions());
    }

}
YoKeyword commented 7 years ago

哦哦 看到了 我模拟你的代码看下~ 不用急 =。=

qssq666123 commented 7 years ago

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal">

<com.buyao.tv.ui.CircleImageView
    android:id="@+id/iv_head"
    android:layout_width="@dimen/singer_size"
    android:layout_height="@dimen/singer_size"
    android:src="@drawable/ico_head_default" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv_name"
        style="@style/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/loading" />

    <TextView
        android:id="@+id/tv_fans_count"
        style="@style/fans"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/loading" />
</LinearLayout>

qssq666123 commented 7 years ago

我怀疑过高度 ,可是adapter里面的onCretaeHolder都没调用,头大

YoKeyword commented 7 years ago

这里断点是否可以走进去 ?

 mFuture = mExecutorService.submit(new Runnable() {
            @Override
            public void run() {
                // 这里断点是否可以走进去 ?
                final ArrayList<EntityWrapper> datas = transform(mIndexableAdapter.getItems());
                ....
        });
qssq666123 commented 7 years ago

对 ,就是这里没法继续了,你这搞的我头大了,问题都不好查 佩服您是怎么写出来的。如果不能断点 - -

YoKeyword commented 7 years ago

怎么不能断点... 你的情况是压根没走, 正常是走进去的~ 你的情况我模拟了下,没什么问题;

你检查下public void onSuccess(String str){} 的回调确认执行了吗? 以及回调解析后的数据models的完整性

qssq666123 commented 7 years ago

真执行了,我都调试过的,模型数据也是完整的 有数据 ,就那个地方没法进去

qssq666123 commented 7 years ago

这个项目n个地方这样写了 ,唯独这个东西 出毛病看不到效果 就是空白。。

qssq666123 commented 7 years ago

而且那句话也走了呀,调试到你刚刚那个方法就没法继续了。 as断点下不了 不是x也不是勾

qssq666123 commented 7 years ago

现在都可以下了,。

qssq666123 commented 7 years ago

进行之后没能出来了。transform

YoKeyword commented 7 years ago

既然进去了, 你先调试下看看~

qssq666123 commented 7 years ago

import com.github.promeg.pinyinhelper.Pinyin; 这个类源码是红色的

qssq666123 commented 7 years ago

没法追踪了 就是getPinYin飞掉了

qssq666123 commented 7 years ago

问题就出在PinYin.toPin**这个 PinYin是红色的 源码 你的 jcenter下载的, 但是你是如何做到编译的,as为何又不报错。。

YoKeyword commented 7 years ago

该库是依赖TinyPinyin库的, 以compile方式,而不是provided方式, 所以如果编译正常的话,TinyPinyin库是存在的

你看下External Libraries里是否有TinyPinyin-1.0.0

qssq666123 commented 7 years ago

我已经明白了你提交到jcenter的有问题,我成了试验品 5555555555

qssq666123 commented 7 years ago

我是直接下载你的arr,有毛病。。

YoKeyword commented 7 years ago

.... 我的天 你为何要下载aar..... 你还在用eclipse?

YoKeyword commented 7 years ago

image

如果你使用的是AS,这样即可....

qssq666123 commented 7 years ago

你不知道github下载很慢么,另外 用 comp**估计也一样 因为原理就是使用哪个,而我是用arr 是因为有时候没网 很烦的,不小心clear的话,最近我爱上直接下载arr+souce.jar了。

另外希望您研究下QQ音乐的那个,就是 字母不显示只显示在顶部。 嗯 你那个compile原理就是从jcenter下载你能正常跑是因为你是直接使用本地的吧。

qssq666123 commented 7 years ago

以前习惯下载github源码,但是就是下载慢。。

YoKeyword commented 7 years ago

原理不同的,compile 一旦你下载好,Gradle就会帮你缓存起来,不必再从远程下载;

aar并不能解决依赖关系, compile内部是gradle机制,会去下载依赖链的~

YoKeyword commented 7 years ago

作为程序员 用个梯子吧~

另外这些库不是从github上下载的,是从jcenter上下载的,不翻墙速度也是挺快的

QQ音乐的那个 回头有空我看下吧

qssq666123 commented 7 years ago

这就蛋疼了。 已comp*的方式按理说我也就不需要修改呀,另外如果使用pro**编译的话 我这里的源码也是不完整的怎么理解,是不是你把lib jar包 没提交吧。 您看看我认为是您没提交lib/ jar包

YoKeyword commented 7 years ago

按README集成下就行了~ 建议你可以找些Gradle相关的资料看看, compile的代码是放到外部库里的:

image

qssq666123 commented 7 years ago

嗯 好的谢谢,我现在用github直接下载导入模块成功解决了上面问题。

qssq666123 commented 7 years ago

最后打扰下,大神 的github下载不卡吗?我用了收费的greeen绿豆下载体验还是一样 几k,但是谷歌打开还可以。

qssq666123 commented 7 years ago

我上传项目都是用 oschina,速度很快

YoKeyword commented 7 years ago

Github浏览没啥问题 上传下载建议还是挂VPN~ 挂VPN还慢的话 应该是VPN节点问题~

qssq666123 commented 7 years ago

大神用的是什么vpn我也想弄一个 这太受罪了