如何使用虚假数据来测试RecyclerView?

时间:2018-02-16 09:54:20

标签: android-fragments android-recyclerview

我让我的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);
    }}}

1 个答案:

答案 0 :(得分:0)

您可能对您的实施感到困惑。 DataFakeGenerator.getData()不需要任何参数。它是适配器构造函数,有2个。

要创建适配器,您可以使用以下代码: PostAdapter postAdapter = new PostAdapter(getContext(), DataFakeGenerator.getData());

PS:this无法使用适配器创建(如果这是您实际尝试使用的代码),因为Fragment不是上下文(但是活动是,这就是您可以使用片段

中的getContext()访问它的原因