Android 在Recyclerview适配器类内调用自定义侦听器

Android 在Recyclerview适配器类内调用自定义侦听器,android,android-recyclerview,listener,android-adapter,Android,Android Recyclerview,Listener,Android Adapter,嗨,我需要的是当有人单击列表中的某个项目时,在Recyclerview适配器类中实现我的自定义侦听器 我确实创建了一个接口类 public interface Selected_Item_Listener { void onButtonClicked(boolean optional,String product_name,String ID); } 在主要活动中,我使用 Selected_Item_Listener selected_item_listener; calss whatever

嗨,我需要的是当有人单击列表中的某个项目时,在Recyclerview适配器类中实现我的自定义侦听器

我确实创建了一个接口类

public interface Selected_Item_Listener {
void onButtonClicked(boolean optional,String product_name,String ID);
}
在主要活动中,我使用

Selected_Item_Listener selected_item_listener;
calss whatever{
init(savedInstanceState);

selected_item_listener = new Selected_Item_Listener() {
            @Override
            public void onButtonClicked(boolean optional, String 
     product_name, String ID) {
 };

public void init(Bundle savedInstanceState) {
  itemAdapter = new ItemAdapter(item_list, 
   getContext(),selected_item_listener);
    LinearLayoutManager horizontalLayoutManager = new 
  LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
    service_items.setLayoutManager(horizontalLayoutManager);
    service_items.setAdapter(itemAdapter);
    populateList();
  }
  private void populatList(){

    item_list.add(new 
    serive_items_list_item(R.drawable.gg,"gg",""));
    item_list.add(new 
    serive_items_list_item(R.drawable.gg,"gg",""));
    item_list.add(new serive_items_list_item(R.drawable.gg,"gg
    gg",""));
    itemAdapter.notifyDataSetChanged();
}
}
在适配器类中,我添加了以下代码

public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {

Context context;
List<serive_items_list_item> horizontalList;
Selected_Item_Listener selected_item_listener;

public ItemAdapter(List<serive_items_list_item> horizontalList, Context context,Selected_Item_Listener selected_item_listener) {
    this.horizontalList = horizontalList;
    this.selected_item_listener = selected_item_listener;
    this.context = context;
}


@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //inflate the layout file
    View itemProductView = LayoutInflater.from(parent.getContext()).inflate(R.layout.service_item_items, parent, false);
    ItemViewHolder gvh = new ItemViewHolder(itemProductView);
    return gvh;
}

@Override
public void onBindViewHolder(ItemViewHolder holder, final int position) {
    if (horizontalList.size() == 2){
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        params.setMargins(Main.screenWidth/8, 0, Main.screenWidth/9, 0);
     holder.lay.setLayoutParams(params);
    }else {

        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        params.setMargins(Main.screenWidth/28, 0, Main.screenWidth/20, 0);
        holder.lay.setLayoutParams(params);


    }
    holder.imageView.setImageResource(horizontalList.get(position).getImageResource());
    holder.txtview.setText(horizontalList.get(position).getText());
    holder.imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String productName = horizontalList.get(position).getText().toString();
            if (selected_item_listener != null){
                selected_item_listener.onButtonClicked(true, productName, "");
        }

        }
    });
}

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

public class ItemViewHolder extends RecyclerView.ViewHolder {
    ImageView imageView;
    TextView txtview;
    LinearLayout lay;
    public ItemViewHolder(View view) {
        super(view);
        imageView=(ImageView) view.findViewById(R.id.imageview_item);
        txtview=(TextView) view.findViewById(R.id.textview_title_item);
        lay = (LinearLayout)view.findViewById(R.id.linear_view);
    }
  }
 }

所选的\u项\u侦听器为空,我想知道我错过了什么?我与另一个扩展对话框并正常工作的类使用了相同的类和代码


我试着把init(savedInstanceState)放进去;在选定的\u项\u侦听器之后=新选定的\u项\u侦听器(){};现在可以开始工作了

您是在
onCreate()
内部初始化
selected\u item\u侦听器
还是作为字段引用?是的,在onCreate(Bundle savedInstanceState)内部我调用init(savedInstanceState);我不是在问
init(savedInstanceState)
;你能发布清晰的代码段吗?无法理解。你能发布日志吗?您正在正确执行null检查,因此我认为不是所选的\u项\u侦听器为null。
selected_item_listener.onButtonClicked(true, productName, "");