Я использовал Spinner в Recyclerview . У меня есть одна кнопка в Mainacctivity. когда я нажимаю эту кнопку, мне нужно получить все выбранные элементы из каждой строки в представлении реселлера. Метод getSelectedItem () вернет выбранный элемент из счетчика, но я думаю, что только для одного элемента он работает.
Я думаю, что нет необходимости использовать setOnItemSelectedListener .
Мой код:
public class MainActivity extends AppCompatActivity {
RecyclerView recycler_view;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recycler_view=findViewById(R.id.recycler_view);
button = findViewById(R.id.button);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
recycler_view.setLayoutManager(mLayoutManager);
setAdapter();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
private void setAdapter( ) {
recycler_view.setVisibility(View.VISIBLE);
StudentsListAdapter studentsListAdapter = new StudentsListAdapter(this);
recycler_view.setAdapter(studentsListAdapter);
// runLayoutAnimation(recycler_view, mSelectedItem);
}
}
адаптер:
public class StudentsListAdapter extends RecyclerView.Adapter<StudentsListAdapter.MyViewHolder> {
String[] list={"Microbiology","Pharmacology","Microbiology","Forensic Medicine"};
String[] studentsName={"Student1","Student2","Studen3","Student4"};
Context ctx;
private ArrayAdapter<String> dataAdapter;
public class MyViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.text_name)
TextView text_name;
@BindView(R.id.spinner1)
Spinner spinner1;
MyViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
public StudentsListAdapter(Context ctx ) {
this.ctx = ctx;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.student_list_item, parent, false);
return new MyViewHolder(itemView);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, @SuppressLint("RecyclerView") final int position) {
holder.text_name.setText(studentsName[position]);
dataAdapter = new ArrayAdapter<String>(ctx, R.layout.spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
holder.spinner1.setAdapter(dataAdapter);
Log.d("Holder ",""+ holder.spinner1.getSelectedItem());
}
@Override
public int getItemCount() {
return studentsName.length;
}
}