0

Я пытался получить кнопку onClickListener кнопок, работающих с раздутым макетом. Я пытался это, но ничего не происходит:Кнопка надутого вида onClickListener не отвечает внутри адаптера RecyclerView

LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.my_profile_fragment, null); 
Button svBtn = (Button) view.findViewById(R.id.saveBtn); 

svBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     System.out.println("CLICKED"); 
    } 
}); 

Внутри RecyclerView адаптера я надуть оригинальный макет в onCreateViewHolder, который имеет расположение карт, и я могу взаимодействовать с ним:

@Override 
public ItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.single_card, null); 

    return new ItemRowHolder(v); 
} 

Но я хотел бы взаимодействовать с кнопкой из другого макета (макет фрагмента). Возможно ли это, если да, то как я могу это достичь?

+0

Можно ли взаимодействовать с нажатиями кнопок с разных макетов? – branHazz

+0

Похоже, что он не может зарегистрировать клики за пределами своего вида '(RecyclerView)'. Поскольку раздутый макет 'my_profile_fragment' не создает никаких нулевых указателей, и я могу найти кнопку, в которой я хочу обрабатывать клики тоже (что находится в макете' my_profile_fragment'). – branHazz

ответ

0

попробуйте view.getParent(), чтобы получить родительский вид фрагмента.

+0

view.getParent(). FindViewById - невозможно. И если бросить его в (View), я получаю nullpointer View a = (View) view.getParent(); a.findViewById (R.id ...... – branHazz

0

То, как вы это делаете, к сожалению, не сработает.

Перейдите к своему методу onBindViewHolder(ViewHolder viewholder, int position) и воспользуйтесь полями viewholder, чтобы прямо настроить прослушиватель кликов.

@Override 
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, int position) { 
    viewHolder.svBtn.setOnClickListener(this); 
} 
+0

svBtn полностью в другом макете, не связанном с этим RecyclerView. Я попытался раздуть разный макет во всех методах RecyclerView и установить onClickListener там, но все равно не работает. – branHazz