Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Recycler视图中获取TextView并将其发送到另一个活动并将其添加到arraylist值_Java_Android_Android Recyclerview_Textview_Android Radiogroup - Fatal编程技术网

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;
        }
    }
});
现在,在需要时将数组传递给下一个活动或类。希望有帮助