我让我的DataFakeGenerator创建一些假数据来测试我的Recycelerview,但是当我想在我的一个片段中使用它时,我有一个错误。 我的错误在这一行:
PostAdapter postAdapter = new PostAdapter(DataFakeGenerator.getData(this));
它说我不能使用“这个”,所以我可以在这个括号中使用什么声明?
这是我的片段:
public class Frag_joke extends Fragment {
public static Fragment instance(){
Fragment fragment = new Frag_joke();
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup layout = (ViewGroup)inflater.inflate(R.layout.frag_joke,null);
RecyclerView recyclerView = (RecyclerView)layout.findViewById(R.id.recycler_view);
PostAdapter postAdapter = new PostAdapter(DataFakeGenerator.getData(this));
recyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
recyclerView.setAdapter(postAdapter);
return layout;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}}
这是我的DataFakeGenerator:
public class DataFakeGenerator {
public static List<Post> getData(){
List<Post> posts= new ArrayList<>();
for(int i=0;i<=6;i++){
Post post= new Post();
post.setId(i);
post.setContent("sample text");
posts.add(post);
}
return posts;
}}
这是我的PostAdapter:
public class PostAdapter extends RecyclerView.Adapter<PostAdapter.PostViewHolder>{
private Context context;
private List<Post> posts;
public PostAdapter(Context context, List<Post>posts){
this.context = context;
this.posts = posts;
}
@Override
public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.layout_post,parent,false);
return new PostViewHolder(view);
}
@Override
public void onBindViewHolder(PostViewHolder holder, int position) {
Post post=posts.get(position);
holder.content.setText(post.getContent());
}
@Override
public int getItemCount() {
return posts.size();
}
public class PostViewHolder extends RecyclerView.ViewHolder{
private TextView content;
public PostViewHolder(View itemView) {
super(itemView);
content=(TextView)itemView.findViewById(R.id.post_content);
}}}
答案 0 :(得分:0)
您可能对您的实施感到困惑。 DataFakeGenerator.getData()
不需要任何参数。它是适配器构造函数,有2个。
要创建适配器,您可以使用以下代码:
PostAdapter postAdapter = new PostAdapter(getContext(), DataFakeGenerator.getData());
PS:this
无法使用适配器创建(如果这是您实际尝试使用的代码),因为Fragment
不是上下文(但是活动是,这就是您可以使用片段
getContext()
访问它的原因