在片段中,通过radiobuttom在回收器视图中显示所选项目。

问题描述 投票:0回答:1

我有这个回收器视图适配器,视图中的每个项目都有一个radiobutton。我想在我的片段中选择项目。我不知道该怎么做。谁能帮帮我?

这是我的适配器类。

public class croptypeadapter extends RecyclerView.Adapter<croptypeadapter.ViewHolder> {
    private List<croptype_list> croptypes;
    private Context context;
    Integer mSelectedItem = 0;

    public croptypeadapter(List<croptype_list> croptypes, Context context) {
        this.croptypes = croptypes;
        this.context = context;
    }

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

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        croptype_list ac=croptypes.get(position);
        Picasso.get().load(ac.getCropurl()).fit().into(holder.img);
        holder.txtview.setText(ac.getCropname());
        holder.radioButton.setChecked(position == mSelectedItem);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder{
        private ImageView img;
        TextView txtview;
        RadioButton radioButton;

        public ViewHolder(View itemView) {
            super(itemView);
            img= itemView.findViewById(R.id.imageview);
            txtview = itemView.findViewById(R.id.txtview);
            radioButton= itemView.findViewById(R.id.radio);

            View.OnClickListener l = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mSelectedItem = getAdapterPosition();
                    String data = croptypes.get(mSelectedItem).getCropname();
                    notifyItemRangeChanged(0, croptypes.size());
                }
            };
            itemView.setOnClickListener(l);
            radioButton.setOnClickListener(l);
        }
    }
}

这是我的片段,其中有回收视图。我想在Textview裁剪中显示在回收器视图中选择的项目。

public class desc extends Fragment{

    private View view;
    RecyclerView vertical_recycler_view;
    private croptypeadapter croptypeadapter;
    private List<croptype_list> cropdata;
    ToggleButton toggleButton2;
    TextView crop;

    public static ApiInterface apiInterface;

    public desc() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_zones, container, false);
        crop = view.findViewById(R.id.crop);

        vertical_recycler_view=view.findViewById(R.id.vertical_recycler_view);
        vertical_recycler_view.setLayoutManager(new LinearLayoutManager(getActivity()));

        apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
        Call<List<croptype_list>>call=apiInterface.getcroptypes();
        call.enqueue(new Callback<List<croptype_list>>() {

            @Override
            public void onResponse(Call<List<croptype_list>> call, Response<List<croptype_list>> response) {

                cropdata=response.body();
                croptypeadapter=new croptypeadapter(cropdata,getActivity());
                vertical_recycler_view.setAdapter(croptypeadapter); }

            @Override
            public void onFailure(Call<List<croptype_list>> call, Throwable t) {

            }
        });

        toggleButton2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

               if(isChecked){
                    toggleButton2.setBackgroundResource(R.drawable.uparrow);
                    vertical_recycler_view.setVisibility(View.VISIBLE);
                }else{
                    toggleButton2.setBackgroundResource(R.drawable.downarrow);
                    vertical_recycler_view.setVisibility(View.GONE);
                }
            }
        });
}
android android-recyclerview recycler-adapter
1个回答
0
投票

为单选按钮设置一个onCheckedChanged监听器,并使txtView在你的类中成为静态的,这样你就可以在你的适配器类中访问它。

static TextView crop

在你的适配器类中的onBindViewholder

holder.radiobutton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked)
          this.mSelectedItem = position;
           desc.crop.setText("yourtext");
         }
    });

onCheckedChanged监听器将更新mSelectedItem的值,这样即使Viewholder被回收,该值也会保持只对所选项目进行选择。

© www.soinside.com 2019 - 2024. All rights reserved.