RecylerView适配器覆盖方法未被调用

时间:2017-07-24 10:17:55

标签: android android-recyclerview override adapter

public class HashTagSearchAdapter extends RecyclerView.Adapter<HashTagSearchAdapter.HashTagViewHolder> {
    Context context;
    List<TagSearchObject> tagResponses;

    public HashTagSearchAdapter (Context context, List<TagSearchObject> tagResponses){
        this.context = context;
        this.tagResponses = tagResponses;
        for (int i =0;i<tagResponses.size();i++){
            Log.e("tagfor",tagResponses.get(i).toString());
        }
        Log.e("constructor",tagResponses.size()+"");
        Log.e("constructor","here");

    }

    @Override
    public HashTagViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.tag_search_list,parent,false);
        Log.e("onCreate","here");
        return new HashTagViewHolder(view);
    }

    @Override
    public void onBindViewHolder(HashTagViewHolder holder, int position) {
        TagSearchObject userTagResponse = tagResponses.get(position);
        Log.e("tag",userTagResponse.toString());
        holder.name.setText(userTagResponse.getName());
        holder.count.setText(userTagResponse.getChallengeCount()+" public posts");
    }

    @Override
    public int getItemCount() {
        Log.e("getItemCount",this.tagResponses.size()+"");
        return tagResponses.size();
    }


    class HashTagViewHolder extends RecyclerView.ViewHolder{
        ImageView hashtag;
        TextView name,count;
        public HashTagViewHolder(View itemView) {
            super(itemView);
            name = (TextView) itemView.findViewById(R.id.name);
            count = (TextView) itemView.findViewById(R.id.count);
        }
    }
}

这里的logcat是:

 E/tagfor:TagSearchObject{id='1', name='hahah', challengeCount='1'}
 E/constructor: 1
 E/constructor: here

2 个答案:

答案 0 :(得分:0)

因为您尚未添加布局管理器和/或您的回收站视图不可见。因为它不可见,所以不会尝试绘制并且从不调用itemCount,因为没有什么可以绘制的。

答案 1 :(得分:0)

layout manager之前将setAdapter设置为RecyclerView

LinearLayoutManager llm = new LinearLayoutManager(getApplicationContext());   
HashTagSearchAdapter hashTagSearchAdapter = new    
HashTagSearchAdapter(context,tagSearchObjects); 
recyclerView.setLayoutManager(llm);
recyclerView.setAdapter(hashTagSearchAdapter);