简体   繁体   中英

Change value recycleview.adapter and save it to textview in mainactivity?

When I change the value from recycleview.adapter, i want to set it the value to textview in mainactivity, how to do it?

it will be like this, 样品

the recycle data retreive from my json, so it will be random and many data, when I change or add the value of "total win" to more than "0", the textview at bottom will be appear, and "total all" will count from data I add, when its done, I want to send the "result" value to next activity or post and save it to mysql dbase,

here my code of MainActivity :

    ...

private List<Details> listDetails = new ArrayList<>();
private RecyclerAdapter viewAdapter;

@BindView(R.id.recyclerView)
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view);
    ButterKnife.bind(this);

    viewAdapter = new RecyclerAdapter(this, listDetails);
   RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
   recyclerView.setLayoutManager(mLayoutManager);
   recyclerView.setItemAnimator(new DefaultItemAnimator());
   recyclerView.setAdapter(viewAdapter);

    getMyData();

}
    ...

private void getMyData() {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(AppConfig.URL_MAIN)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
        ...
    });

    ...

My RecycleAdapter code :

    ...

private Context context;
private List<Details> listDetails;

public RecyclerAdapter(Context context, List<Details> listDetails) {
    this.context = context;
    this.listDetails = listDetails;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_view, parent, false);
    ViewHolder holder = new ViewHolder(v);
    return holder;
}

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
    final Details getSet = listDetails.get(position);

    holder.tvName.setText(getSet.getName());
    holder.numberPickerTotalWin.setValueChangedListener(new ValueChangedListener() {
        @Override
        public void valueChanged(int value, ActionEnum action) {

             Toast.makeText(context, position + value + " Clicked", Toast.LENGTH_SHORT).show();

        }
    });

}


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

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    @BindView((R.id.nP))
    NumberPicker numberPickerTotalWin;

    @BindView(R.id.tvName)
    TextView tvName;

    public ViewHolder(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
        itemView.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        ...
    }
}

Check the code

YourActivity ... implements RecyclerViewItemClick

     private List<Details> listDetails = new ArrayList<>();
        private RecyclerAdapter viewAdapter;

    @BindView(R.id.recyclerView)
    RecyclerView recyclerView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view);
        ButterKnife.bind(this);

        viewAdapter = new RecyclerAdapter(this, listDetails, this);
       RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
       recyclerView.setLayoutManager(mLayoutManager);
       recyclerView.setItemAnimator(new DefaultItemAnimator());
       recyclerView.setAdapter(viewAdapter);

        getMyData();

    }
        ...

    private void getMyData() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(AppConfig.URL_MAIN)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
            ...
        });

RecyclerViewAdapter

private RecyclerViewItemClick mListener;

    public RecyclerAdapter(Context context, List<Details> listDetails, RecyclerViewItemClick listener) {
        this.context = context;
        this.listDetails = listDetails;
        this.mListener = listener;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_view, parent, false);
        ViewHolder holder = new ViewHolder(v, mListener);
        return holder;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        final Details getSet = listDetails.get(position);

        holder.tvName.setText(getSet.getName());
        holder.numberPickerTotalWin.setValueChangedListener(new ValueChangedListener() {
            @Override
            public void valueChanged(int value, ActionEnum action) {

                 Toast.makeText(context, position + value + " Clicked", Toast.LENGTH_SHORT).show();

            }
        });

    }


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

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        @BindView((R.id.nP))
        NumberPicker numberPickerTotalWin;

        @BindView(R.id.tvName)
        TextView tvName;

        public ViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
            itemView.setOnClickListener(this);

        }

        @Override
        public void onClick(View view) {
            if (mListener != null){
//you can access to the current position if you want -> getLayoutPosition()
              mListener.yourMethod();

}
        }

public interface RecyclerViewItemClick { 
   void yourMethod();

}
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM