Привет, мне нужно внедрить мой пользовательский прослушиватель внутри класса адаптера 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);
}
}
}
по какой-то причине, он выдает исключение нулевого указателя на этой строке
selected_item_listener.onButtonClicked(true, productName, "");
что selected_item_listener имеет значение null, интересно, что мне не хватает? Я использую тот же класс и код с другим классом, который расширяет диалоги и работает нормально