【问题标题】:Hide Button if not data in recyclerview如果 recyclerview 中没有数据,则隐藏按钮
【发布时间】:2020-06-01 15:42:38
【问题描述】:

我创建了一个应用程序,其中我有多个编辑文本和一个带有 recyclerviuew 的按钮和一个设置为 Gone 的按钮。单击按钮将我的所有数据添加到我的 recyclerview 列表中,方法是更改​​我的 recycelr 视图和我的按钮的可见性.在我的自定义适配器中,我正在使用图像视图从位置中删除项目,现在我希望如果它从列表中删除所有数据,那么它应该自动隐藏我的 Button 和 recyclerview。

//Recycler_view 适配器

 public class Myviewholder extends RecyclerView.ViewHolder {
        public TextView  land_Detail, area_detail, s_no1;
        public Button delete;


        public Myviewholder(View view) {
            super(view);

            land_Detail = view.findViewById(R.id.hint31);
            area_detail = view.findViewById(R.id.hint21);
            s_no1 = view.findViewById(R.id.hint11);
            delete = view.findViewById(R.id.hint41);

        }
    }

    public Land_adapters(List<Land_list> land_list, Context context) {
        this.laand_list = land_list;
        this.context = context;
    }


    @NonNull
    @Override
    public Land_adapters.Myviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.land_list, parent, false);

        return new Myviewholder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull Myviewholder holder, final int position) {
        final Land_list current_year = laand_list.get(position);

        holder.area_detail.setText("District :" + current_year.getDistrict_name() + "\n" + "Village :" + current_year.getVillage_name());

        holder.s_no1.setText(String.valueOf(position + 1));
        holder.land_Detail.setText("Acre :" + current_year.getAcre() + "\n" + "Kanal :" + current_year.getKanal() + "\n" + "Marla :" + current_year.getMarla());
        holder.delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Toast.makeText(context, "", Toast.LENGTH_SHORT).show();
                Land_list theRemovedItem = laand_list.get(position);
                // remove your item from data base
                laand_list.remove(position);  // remove the item from list
                notifyItemRemoved(position); // notify the adapter about the removed item

            }
        });
    }


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

//我如何在 mainactivity 类中使​​用我的回收器

   public void final_step() {
        // marla_edit.setError(null);
        recyclerView = findViewById(R.id.recycler_view_last1);


        mAdapter1 = new Land_Adapter(last_Year1);
        recyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setAdapter(mAdapter1);


        Land_list last_year1 = new Land_list(land_acre, land_kanal, village_selected1, land_marla, district_selected1, teshil_selected1, block_selected1, block_code, teshil_code1, village_code1, district_code);
        last_Year1.add(last_year1);
        mAdapter1.notifyDataSetChanged();
if (!(last_Year1.size() == 0)) {
    RelativeLayout linearLayout = findViewById(R.id.linear123);


    recyclerView.setVisibility(View.VISIBLE);
    next_button.setVisibility(View.VISIBLE);

}
else
{
    next_button.setVisibility(View.INVISIBLE);

}

// 我只是希望当它在 recycelr 视图中按下删除图像时它应该自动隐藏我的按钮。

【问题讨论】:

    标签: android-studio android-recyclerview


    【解决方案1】:

    您可以使用接口通知片段/活动,列表为空。 适配器如下:

    public class CustomAdapter extends RecyclerView.Adapter<CustomViewHolder> {
    
            AdapterListener listener;
    
            public void setListener(AdapterListener listener) {
                this.listener = listener;
            }
    
            ...
    
            @Override
            public void onBindViewHolder(@NonNull Myviewholder holder, final int position) {
                ...
                holder.delete.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        ...
                        // remove your item from data base
                        laand_list.remove(position);  // remove the item from list
                        notifyItemRemoved(position); // notify the adapter about the removed item
                        if (laand_list.size()==0)
                            listener.onDataListIsEmpty();
    
                    }
                });
            }
    
            public interface AdapterListener {
                void onDataListIsEmpty();
            }
    
        }
    

    Activity/Fragment 如下:

    class MyActivity extends Activity implements CustomAdapter.AdapterListener {
    
            CustomAdapter adapter;
    
            @Override
            protected void onCreate(@Nullable Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                ...
                adapter = new CustomAdapter();
                adapter.setListener(this);
                ...
            }
    
            @Override
            public void onDataListIsEmpty() {
                // set visible or gone views 
            }
        }
    

    【讨论】:

    • 尝试在显示此错误的空对象引用上调用接口方法“void com.example.agridept.Land_Adapter$AdapterListener.onDataListIsEmpty()”
    • @sunnyphogat 你确定调用这个方法adapter.setListener(this);
    • 是 mAdapter1 = new Land_Adapter(last_Year1); // last_YEar1 是我的数组列表名称 mAdapter1.setListener(this);
    • 先生有什么办法可以帮助我吗??
    • 我认为这可以正常工作。我可以看看你的代码吗? (您的代码是否存在公共存储库?)
    猜你喜欢
    • 2013-12-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2016-09-10
    • 1970-01-01
    • 2015-07-11
    • 2016-07-29
    相关资源
    最近更新 更多