我知道这个问题已经被问到了,但是在检查了答案后,我仍然无法找到解决方案。这是我的适配器:
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,从另一个方法加载。谢谢!
的回复答案 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代码,不确定语法;)