Android RecyclerView custommAdapter和Main活动

Android RecyclerView custommAdapter和Main活动,android,Android,在我的应用程序中,我在Mainactivity中有许多按钮,我的应用程序使用回收器视图来显示列表项(行布局)。列表项(行布局)由两个编辑文本和一个文本视图组成。我已经创建了一个自定义适配器来显示行\ u布局 现在,我想让我的应用程序根据在MainActivity上单击的按钮更新适配器上的两个EditText和TextView,但问题是按钮在MainActivity上,EditText和TextView在适配器中。那么我如何实现这一点呢 请不要将此问题标记为重复问题,我已经搜索了很多次,但我失败了

在我的应用程序中,我在Mainactivity中有许多按钮,我的应用程序使用回收器视图来显示列表项(行布局)。列表项(行布局)由两个编辑文本和一个文本视图组成。我已经创建了一个自定义适配器来显示行\ u布局

现在,我想让我的应用程序根据在MainActivity上单击的按钮更新适配器上的两个EditText和TextView,但问题是按钮在MainActivity上,EditText和TextView在适配器中。那么我如何实现这一点呢

请不要将此问题标记为重复问题,我已经搜索了很多次,但我失败了,这是我在stackoverflow中提出问题的最后一次机会,请帮助我

提前谢谢

这是我的主要活动

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="0dp"
        android:layout_marginBottom="13dp">


        <Button
            android:id="@+id/buttonl7"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="9dp"
            android:layout_marginBottom="4dp"
            android:padding="4dp"
            android:text="7" />

        <Button
            android:id="@+id/buttonr9"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="330dp"
            android:layout_marginBottom="0dp"
            android:padding="4dp"
            android:text="9" />

        <Button
            android:id="@+id/buttonr8"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="274dp"
            android:layout_marginBottom="2dp"
            android:padding="4dp"
            android:text="8" />

        <Button
            android:id="@+id/buttonr7"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="211dp"
            android:layout_marginBottom="4dp"
            android:padding="4dp"
            android:text="7" />

        <Button
            android:id="@+id/buttonl9"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="131dp"
            android:layout_marginBottom="5dp"
            android:padding="4dp"
            android:text="9" />

        <Button
            android:id="@+id/buttonl8"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="69dp"
            android:layout_marginBottom="7dp"
            android:padding="4dp"
            android:text="8" />


    </RelativeLayout>


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="0dp"
        android:layout_marginBottom="161dp">

        <Button
            android:id="@+id/buttonl1"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="9dp"
            android:layout_marginBottom="4dp"
            android:padding="4dp"
            android:text="1" />

        <Button
            android:id="@+id/buttonr3"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="327dp"
            android:layout_marginBottom="2dp"
            android:padding="4dp"
            android:text="3" />

        <Button
            android:id="@+id/buttonr2"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="269dp"
            android:layout_marginBottom="2dp"
            android:padding="4dp"
            android:text="2" />

        <Button
            android:id="@+id/buttonr1"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="209dp"
            android:layout_marginBottom="5dp"
            android:padding="4dp"
            android:text="1" />

        <Button
            android:id="@+id/buttonl3"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="129dp"
            android:layout_marginBottom="6dp"
            android:padding="4dp"
            android:text="3" />

        <Button
            android:id="@+id/buttonl2"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="69dp"
            android:layout_marginBottom="7dp"
            android:padding="4dp"
            android:text="2" />


    </RelativeLayout>


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="0dp"
        android:layout_marginBottom="87dp">


        <Button
            android:id="@+id/buttonl4"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="9dp"
            android:layout_marginBottom="4dp"
            android:padding="4dp"
            android:text="4" />

        <Button
            android:id="@+id/buttonr6"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="330dp"
            android:layout_marginBottom="3dp"
            android:padding="4dp"
            android:text="6" />

        <Button
            android:id="@+id/buttonr5"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="268dp"
            android:layout_marginBottom="3dp"
            android:padding="4dp"
            android:text="5" />

        <Button
            android:id="@+id/buttonr4"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="209dp"
            android:layout_marginBottom="6dp"
            android:padding="4dp"
            android:text="4" />

        <Button
            android:id="@+id/buttonl6"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="131dp"
            android:layout_marginBottom="6dp"
            android:padding="4dp"
            android:text="6" />

        <Button
            android:id="@+id/buttonl5"
            android:layout_width="54dp"
            android:layout_height="58dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentBottom="true"
            android:layout_marginStart="69dp"
            android:layout_marginBottom="6dp"
            android:padding="4dp"
            android:text="5" />


    </RelativeLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="376dp"
        android:layout_height="262dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="0dp"
        android:layout_marginTop="5dp" />


</RelativeLayout>

这是我的主要活动

package com.example.manuj.autocalc2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {


    Button buttonl0, buttonl1, buttonl2, buttonl3, buttonl4, buttonl5, buttonl6,
            buttonl7, buttonl8, buttonl9, buttonl10;
    Button buttonr0, buttonr1, buttonr2, buttonr3, buttonr4, buttonr5, buttonr6, buttonr7,
            buttonr8, buttonr9, buttonr10;

    RecyclerView recyclerView;
    CustomAdapter customAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//            button0 = (Button) findViewById(R.id.buttonl0);
        buttonl1 = (Button) findViewById(R.id.buttonl1);
        buttonl2 = (Button) findViewById(R.id.buttonl2);
        buttonl3 = (Button) findViewById(R.id.buttonl3);
        buttonl4 = (Button) findViewById(R.id.buttonl4);
        buttonl5 = (Button) findViewById(R.id.buttonl5);
        buttonl6 = (Button) findViewById(R.id.buttonl6);
        buttonl7 = (Button) findViewById(R.id.buttonl7);
        buttonl8 = (Button) findViewById(R.id.buttonl8);
        buttonl9 = (Button) findViewById(R.id.buttonl9);

        buttonr1 = (Button) findViewById(R.id.buttonr1);
        buttonr2 = (Button) findViewById(R.id.buttonr2);
        buttonr3 = (Button) findViewById(R.id.buttonr3);
        buttonr4 = (Button) findViewById(R.id.buttonr4);
        buttonr5 = (Button) findViewById(R.id.buttonr5);
        buttonr6 = (Button) findViewById(R.id.buttonr6);
        buttonr7 = (Button) findViewById(R.id.buttonr7);
        buttonr8 = (Button) findViewById(R.id.buttonr8);
        buttonr9 = (Button) findViewById(R.id.buttonr9);


        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        final ArrayList<Calc> arrayList = new ArrayList<>();
        customAdapter = new CustomAdapter(this, arrayList);


        Calc calc = new Calc("-", "-", "-");
        arrayList.add(calc);
        recyclerView.setAdapter(customAdapter);


        buttonl1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //when this is clicked, i want to update 1 to editText.
            }
        });
    }

}
package com.example.manuj.autocalc2;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.DefaultItemAnimator;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.view.Gravity;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.LinearLayout;
导入android.widget.ListView;
导入android.widget.RelativeLayout;
导入android.widget.ScrollView;
导入android.widget.TextView;
导入java.util.ArrayList;
公共类MainActivity扩展了AppCompatActivity{
按钮按钮0,按钮1,按钮2,按钮3,按钮4,按钮5,按钮6,
按钮7,按钮8,按钮9,按钮10;
按钮按钮0,按钮1,按钮2,按钮3,按钮4,按钮5,按钮6,按钮7,
按钮8,按钮9,按钮10;
回收视图回收视图;
自定义适配器自定义适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//button0=(Button)findViewById(R.id.buttonl0);
buttonl1=(按钮)findViewById(R.id.buttonl1);
buttonl2=(按钮)findViewById(R.id.buttonl2);
buttonl3=(按钮)findViewById(R.id.buttonl3);
buttonl4=(按钮)findViewById(R.id.buttonl4);
buttonl5=(按钮)findViewById(R.id.buttonl5);
buttonl6=(按钮)findViewById(R.id.buttonl6);
buttonl7=(按钮)findViewById(R.id.buttonl7);
buttonl8=(按钮)findViewById(R.id.buttonl8);
buttonl9=(Button)findViewById(R.id.buttonl9);
buttonr1=(按钮)findViewById(R.id.buttonr1);
buttonr2=(按钮)findViewById(R.id.buttonr2);
buttonr3=(按钮)findViewById(R.id.buttonr3);
buttonr4=(按钮)findViewById(R.id.buttonr4);
buttonr5=(按钮)findViewById(R.id.buttonr5);
buttonr6=(按钮)findViewById(R.id.buttonr6);
buttonr7=(按钮)findViewById(R.id.buttonr7);
buttonr8=(按钮)findViewById(R.id.buttonr8);
buttonr9=(Button)findViewById(R.id.buttonr9);
recyclerView=findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
setItemAnimator(新的DefaultItemAnimator());
最终ArrayList ArrayList=新ArrayList();
customAdapter=新的customAdapter(此为arrayList);
计算量=新计算量(“-”、“-”、“-”);
arrayList.add(计算);
recyclerView.setAdapter(customAdapter);
buttonl1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//单击后,我想将1更新为editText。
}
});
}
}
这是我的列表项目(行布局)


这是我的自定义适配器类

package com.example.manuj.autocalc2;

import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.manuj.autocalc2.Calc;
import com.example.manuj.autocalc2.MainActivity;
import com.example.manuj.autocalc2.R;

import java.util.ArrayList;


public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {

    private LayoutInflater inflater;
    public static ArrayList<Calc> editModelArrayList;


    public CustomAdapter(Context ctx, ArrayList<Calc> editModelArrayList){

        inflater = LayoutInflater.from(ctx);
        this.editModelArrayList = editModelArrayList;
    }

    @Override
    public CustomAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = inflater.inflate(R.layout.list_items, parent, false);
        MyViewHolder holder = new MyViewHolder(view);

        return holder;
    }

    @Override
    public void onBindViewHolder(final CustomAdapter.MyViewHolder holder, final int position) {


        holder.editText1.setText(editModelArrayList.get(position).getmItemEdit());
        holder.editText2.setText(editModelArrayList.get(position).getmAmtEdit());
        holder.textView.setText(editModelArrayList.get(position).getmAmtEdit());

    }

    @Override
    public int getItemCount() {
        return editModelArrayList.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder{

        protected EditText editText1;
        protected EditText editText2;
        protected TextView textView;

        public void updateItemEdit(String text){
            editText1.setText(editText1.getText());
        }

        public MyViewHolder(View itemView) {
            super(itemView);


            editText1 = (EditText) itemView.findViewById(R.id.itemEdit);
            editText2=itemView.findViewById(R.id.amtEdit);
            textView=itemView.findViewById(R.id.Price);


            editText1.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                    editModelArrayList.get(getAdapterPosition()).setmItemEdit(editText1.getText()+editText2.getText().toString());
                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });

            editText2.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                    editModelArrayList.get(getAdapterPosition()).setmItemEdit(editText1.getText()+editText2.getText().toString());
                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });

        }

    }
}
package com.example.manuj.autocalc2;
导入android.app.Activity;
导入android.content.Context;
导入android.support.annotation.NonNull;
导入android.support.v7.widget.RecyclerView;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.example.manuj.autocalc2.Calc;
导入com.example.manuj.autocalc2.main活动;
导入com.example.manuj.autocalc2.R;
导入java.util.ArrayList;
公共类CustomAdapter扩展了RecyclerView.Adapter{
私人充气机;
公共静态ArrayList editModelArrayList;
公共CustomAdapter(上下文ctx,ArrayList editModelArrayList){
充气机=从(ctx)开始的充气机;
this.editModelArrayList=editModelArrayList;
}
@凌驾
public CustomAdapter.MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.list_项,父项,false);
MyViewHolder=新的MyViewHolder(视图);
报税表持有人;
}
@凌驾
公共无效onBindViewHolder(最终CustomAdapter.MyViewHolder,最终int位置){
holder.editText1.settText(editModelArrayList.get(position.getmItemEdit());
holder.editText2.setText(editModelArrayList.get(position.getmAmtEdit());
holder.textView.setText(editModelArrayList.get(position.getmAmtEdit());
}
@凌驾
public int getItemCount(){
返回editModelArrayList.size();
}
类MyViewHolder扩展了RecyclerView.ViewHolder{
受保护的编辑文本编辑文本1;
受保护的编辑文本编辑文本2;
受保护的文本视图文本视图;
package com.example.manuj.autocalc2;

import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.manuj.autocalc2.Calc;
import com.example.manuj.autocalc2.MainActivity;
import com.example.manuj.autocalc2.R;

import java.util.ArrayList;


public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {

    private LayoutInflater inflater;
    public static ArrayList<Calc> editModelArrayList;


    public CustomAdapter(Context ctx, ArrayList<Calc> editModelArrayList){

        inflater = LayoutInflater.from(ctx);
        this.editModelArrayList = editModelArrayList;
    }

    @Override
    public CustomAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = inflater.inflate(R.layout.list_items, parent, false);
        MyViewHolder holder = new MyViewHolder(view);

        return holder;
    }

    @Override
    public void onBindViewHolder(final CustomAdapter.MyViewHolder holder, final int position) {


        holder.editText1.setText(editModelArrayList.get(position).getmItemEdit());
        holder.editText2.setText(editModelArrayList.get(position).getmAmtEdit());
        holder.textView.setText(editModelArrayList.get(position).getmAmtEdit());

    }

    @Override
    public int getItemCount() {
        return editModelArrayList.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder{

        protected EditText editText1;
        protected EditText editText2;
        protected TextView textView;

        public void updateItemEdit(String text){
            editText1.setText(editText1.getText());
        }

        public MyViewHolder(View itemView) {
            super(itemView);


            editText1 = (EditText) itemView.findViewById(R.id.itemEdit);
            editText2=itemView.findViewById(R.id.amtEdit);
            textView=itemView.findViewById(R.id.Price);


            editText1.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                    editModelArrayList.get(getAdapterPosition()).setmItemEdit(editText1.getText()+editText2.getText().toString());
                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });

            editText2.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                    editModelArrayList.get(getAdapterPosition()).setmItemEdit(editText1.getText()+editText2.getText().toString());
                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });

        }

    }
}
 Calc calc = new Calc("-", "-", "-");
    arrayList.add(calc);
    arrayList.add(calc);
    arrayList.add(calc);
    arrayList.add(calc);
    arrayList.add(calc);
    arrayList.add(calc);
    arrayList.add(calc);
    arrayList.add(calc);
    arrayList.add(calc);
    recyclerView.setAdapter(customAdapter);
//  add 9 values to list so that each button will change it's respective position

    buttonl1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Calc calc = new Calc("buttonl1", "buttonl1", "buttonl1");
                    customAdapter.updateEntryAt(0,calc);
                }
            });

     buttonl2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Calc calc = new Calc("buttonl2", "buttonl2", "buttonl2");
                    customAdapter.updateEntryAt(1,calc);
                }
            });
public void updateEntryAt(int positionToUpdate,Calc calc){
     editModelArrayList.remove(positionToUpdate);
     editModelArrayList.add(positionToUpdate,calc);
     notifyDataSetChanged();
}