Доброго!
Есть несколько контейнеров layout, в каждом контейнере есть кнопки, которые создаются программно. Как узнать на какую кнопку нажал пользователь и к какому контейнеру она относится
Сергей Краснодемский: попробую более подробно. button.getId вижу. У меня проблема, что я не совсем понимаю как в адроиде создавать уникальные элементы с ресурсами из xml. У меня сейчас есть MyFragment exstends Fragment. В этом классе я переопределяю OnCreateView и пишу ниже
View view = inflater.inflate(R.layout.plus, container, false);
Далее ищу там кнопку
buttonPlus = (AppCompatImageButton) view.findViewById(R.id.button_plus);
Фрагмент готов. У меня есть несколько контейнеров, в каждом контейнере нужен экземпляр класса MyFragment, создаю их, внешне всё красиво, но несмотря на то, что они находятся в разных контейнерах, при нажатии на кнопку я получаю только "ссылку" на самый первый контейнер. Т.е. к примеру, я хочу при нажатии кнопки создавать ещё одну такую же кнопку в этом фрагменте, какую бы я кнопку не нажал, в итоге все кнопки появляются в первом контейнере
В приложении, в UI, контейнеры что собой представляют, зачем они? Сколько их, это случайное число или фиксированное?
.findViewById(R.id.button_plus); находит первый контейнер, потому что у вас все контейнеры button_plus. Соответсвенно как найти то, у чего нет id, да еще по его id.
Сергей Краснодемский: Ну это мои извращения для получения нужно вида View. Есть recyclerview, в нём cardview соответственно, в каждой cardview лежит контейнер LinerLayout. Изначально сам контейнер был в xml cardview, сейчас переделал и контейнер создаю кодом и добавляю его в cardview в классе
publick static class MyHolder extends RecyclerView.ViewHolder{
protected View view;
private CardView cardView;
public MyHolder(final View itemView) {
super(itemView);
cardView = (CardView) itemView.findViewById(R.id.card_view);
LinearLayout layout = new LinearLayout(cardView.getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(params);
layout.setId(anInt);
cardView.addView(layout);
View viewPlus = new ItemPlus().onCreateView((LayoutInflater) layout.getContext().
getSystemService(Context.LAYOUT_INFLATER_SERVICE), (ViewGroup) itemView, new Bundle());
layout.addView(viewPlus);
}
}
Сергей Краснодемский: ток щас руки дошли, свежим взглядом нашёл простую ошибку в адаптере, во ViewGroup не то передавал. Вместо (ViewGroup) itemView нужно было передавать мой layout