Java 如何在Recycler视图中获取TextView并将其发送到另一个活动并将其添加到arraylist值
我无法在Java 如何在Recycler视图中获取TextView并将其发送到另一个活动并将其添加到arraylist值,java,android,android-recyclerview,textview,android-radiogroup,Java,Android,Android Recyclerview,Textview,Android Radiogroup,我无法在RecyclerView中获取每个文本视图,如“缺席”、“当前”和“原谅”,但TextView只有一个id。如何获取RecyclerView中的所有TextView。这是我的活动中的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_adapter
RecyclerView
中获取每个文本视图,如“缺席”、“当前”和“原谅”,但TextView
只有一个id。如何获取RecyclerView
中的所有TextView
。这是我的活动
中的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_adapter);
final TextView dates,blocks;
blocks=findViewById(R.id.blocks);
dates=findViewById(R.id.dates);
database =FirebaseDatabase.getInstance();
submit=findViewById(R.id.sumbitBrn);
final String block = getIntent().getExtras().getString("Block");
final String date = getIntent().getExtras().getString("Date");
blocks.setText(block);
dates.setText(date);
swipeRefreshLayout = findViewById(R.id.refresh);
exampleList = new ArrayList<>();
values = new ArrayList<>();
myReff = FirebaseDatabase.getInstance().getReference("Section").child(block);
myReff.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot students:dataSnapshot.getChildren()){
Students students1 = students.getValue(Students.class);
exampleList.add(students1);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mAdapter = new ExampleAdapter(exampleList);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(MainAdapter.this);
mAdapter = new ExampleAdapter(exampleList);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(false);
}
},4000);
}
});
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myReff =database.getReference("Date").child(dates.getText().toString()).child(blocks.getText().toString());
// I WILL INSERT HERE THE CODE FOR GETTING THE TEXTVIEWS INSIDE THE RECYCLER
Toast.makeText(MainAdapter.this,"SUCCESS!",Toast.LENGTH_LONG).show();
}
});
这是我的应用程序的屏幕截图
这是我的main活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_adapter);
final TextView dates,blocks;
blocks=findViewById(R.id.blocks);
dates=findViewById(R.id.dates);
database =FirebaseDatabase.getInstance();
submit=findViewById(R.id.sumbitBrn);
final String block = getIntent().getExtras().getString("Block");
final String date = getIntent().getExtras().getString("Date");
blocks.setText(block);
dates.setText(date);
swipeRefreshLayout = findViewById(R.id.refresh);
exampleList = new ArrayList<>();
values = new ArrayList<>();
myReff = FirebaseDatabase.getInstance().getReference("Section").child(block);
myReff.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot students:dataSnapshot.getChildren()){
Students students1 = students.getValue(Students.class);
exampleList.add(students1);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mAdapter = new ExampleAdapter(exampleList);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(MainAdapter.this);
mAdapter = new ExampleAdapter(exampleList);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(false);
}
},4000);
}
});
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myReff =database.getReference("Date").child(dates.getText().toString()).child(blocks.getText().toString());
// I WILL INSERT HERE THE CODE FOR GETTING THE TEXTVIEWS INSIDE THE RECYCLER
Toast.makeText(MainAdapter.this,"SUCCESS!",Toast.LENGTH_LONG).show();
}
});
<>你可以考虑使用一个数组来保持你的代码中的数据跟踪。在适配器中,考虑创建一个数组,如下所示。p>
private int[] attendance = new int[list.size()]; // The idea is to initialize the array having the same size as your list
private final int PRESENT = 0;
private final int ABSENT = 1;
private final int EXCUSE = 2;
现在在check listener中,将适当的值添加到数组中,以指示考勤的状态
holder.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i){
case R.id.present:
holder.result.setText("Present");
attendence[position] = PRESENT;
break;
case R.id.absent:
holder.result.setText("Absent");
attendence[position] = ABSENT;
break;
case R.id.excuse:
holder.result.setText("Excuse");
attendence[position] = EXCUSE;
break;
case default:
holder.result.setText("Present");
attendence[position] = PRESENT;
break;
}
}
});
现在,在需要时将数组传递给下一个活动或类。希望有帮助