RecyclerView:没有连接适配器

时间:2016-09-22 04:23:00

标签: android android-recyclerview

我知道这个问题已经被问到了,但是在检查了答案后,我仍然无法找到解决方案。这是我的适配器:

this.handleClick(this.props.todo)

这是我加载它的方法:

 public static class StarredReposViewHolder extends RecyclerView.ViewHolder {
    LinearLayout starredReposLayout;
    TextView starredRepoName;

    public StarredReposViewHolder(View v) {
        super(v);
        starredReposLayout = (LinearLayout) v.findViewById(R.id.repo_starred_item_layout);
        starredRepoName = (TextView) v.findViewById(R.id.starredepoName);
    }
}

public StarredReposAdapter(List<GitHubstarredRepos> repos, int rowLayout, Context context) {
    this.starredRepos = repos;
    this.rowLayout = rowLayout;
    this.context = context;
}

@Override
public StarredReposAdapter.StarredReposViewHolder onCreateViewHolder(ViewGroup parent,
                                                       int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
    return new StarredReposViewHolder(view);
}


@Override
public void onBindViewHolder(StarredReposViewHolder holder, int position) {
    holder.starredRepoName.setText(starredRepos.get(position).getStarredName());
}

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

正确输入onResponse的正文。问题不在于它是在onCreate中定义的,因为我在同一个屏幕上有另一个Recycle View,从另一个方法加载。谢谢!

PS:response.body()Here

的回复

1 个答案:

答案 0 :(得分:1)

嗯,从练习开始,你应该在#onCreate()

中的mainThread中使用RecyclerView#setAdapter()

public void onCreate() { recyclerViewSt.setAdapter(myAdapter); }

在onResponse()中需要更新的是用于提供适配器的dataSet。

您可以提取response.body(),它将对象数组(List repos)返回到活动中的全局变量中。像:

List<GitHubstarredRepos> myDatasource = new ArrayList<>();

然后使用它:

myAdapter = new StarredReposAdapter(myDatasource, R.layout.list_item_starred_repo, getApplicationContext()));

接下来,在网络呼叫的回调中:

onResponse(response) { myDatasource.clear(); myDatasource.addAll(response.body()); myRecyclerview.notifyDatasetChanged(); } Voila,我的psedocode代码,不确定语法;)