Android 如何在自己的活动中处理Recyclerview项以设置可见性?

Android 如何在自己的活动中处理Recyclerview项以设置可见性?,android,Android,在这些文件中,我声明了布尔值和一个函数,即setCheckboxVisibilityStatus(),以及如何在活动中调用该函数。如果我像适配器一样调用.setCheckboxVisibilityStatus(),它会显示错误 公共类BrowseHuntSlideAdapter扩展了RecyclerView.Adapter{ public LayoutInflater inflater; private ArrayList<BrowseHuntSlideModel> dataMode

在这些文件中,我声明了布尔值和一个函数,即setCheckboxVisibilityStatus(),以及如何在活动中调用该函数。如果我像适配器一样调用.setCheckboxVisibilityStatus(),它会显示错误

公共类BrowseHuntSlideAdapter扩展了RecyclerView.Adapter{

public LayoutInflater inflater;
private ArrayList<BrowseHuntSlideModel> dataModelArrayList;
Double lat, lng;
String address;

private boolean hideChkbox = false;

public static ArrayList<Object> mySelectPlace = new ArrayList<Object> ();
public static ArrayList<String> mySelectPlaceAdd = new ArrayList<> ();
public static ArrayList<String> mySelectplaceImg = new ArrayList<> ();
public static ArrayList<String> mySelectplaceDesc = new ArrayList<> ();
public BrowseHuntSlideAdapter(Context ctx, ArrayList<BrowseHuntSlideModel> dataModelArrayList) {

    inflater = LayoutInflater.from ( ctx );
    this.dataModelArrayList = dataModelArrayList;
    //this.mapboxMap = mapBoxMap;

}

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

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

    return holder;
}

public void setCheckboxVisibilityStatus(boolean status) {
    hideChkbox = status;

    notifyDataSetChanged();
}

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


    if(hideChkbox)
        holder.checkBox.setVisibility(GONE); //Make it invisible instead of GONE if needed.
    else
        holder.checkBox.setVisibility(VISIBLE);

}

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

class MyViewHolder extends RecyclerView.ViewHolder {

    TextView place_name, place_address, distance;
    ImageView place_image;
    Button button;
    CheckBox checkBox;

    public MyViewHolder(View itemView) {
        super ( itemView );
        Context context = itemView.getContext ();
        checkBox = (CheckBox)itemView.findViewById(R.id.checkbox);
        //place_address1 = (TextView) itemView.findViewById ( R.id.place_address );

    }
公共充气机;
私有ArrayList dataModelArrayList;
双lat,液化天然气;
字符串地址;
私有布尔hideChkbox=false;
publicstaticarraylistmyselectplace=newarraylist();
publicstaticarraylistmyselectplaceadd=newarraylist();
publicstaticarraylistmyselectplaceimg=newarraylist();
publicstaticarraylistmyselectplacedesc=newarraylist();
公共浏览HuntSlideAdapter(上下文ctx,ArrayList dataModelArrayList){
充气机=充气机(ctx);
this.dataModelArrayList=dataModelArrayList;
//this.mapboxMap=mapboxMap;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.browse\u slide\u list\u item,parent,false);
MyViewHolder=新的MyViewHolder(视图);
报税表持有人;
}
public void setCheckboxVisibilityStatus(布尔状态){
hideChkbox=状态;
notifyDataSetChanged();
}
@凌驾
BindViewHolder上的公共无效(BrowseHuntSlidedApter.MyViewHolder,int位置){
if(hideChkbox)
holder.checkBox.setVisibility(GONE);//如果需要,使其不可见而不是消失。
其他的
holder.checkBox.setVisibility(可见);
}
@凌驾
public int getItemCount(){
返回dataModelArrayList.size();
}
类MyViewHolder扩展了RecyclerView.ViewHolder{
text查看地点名称、地点地址、距离;
图像视图放置图像;
按钮;
复选框;
公共MyViewHolder(查看项目视图){
超级(项目视图);
Context=itemView.getContext();
checkBox=(checkBox)itemviewbyd(R.id.checkBox);
//place\u address1=(TextView)itemView.findViewById(R.id.place\u address);
}
} }

“活动”中的“编辑”按钮

公共类Gotosafari扩展了AppCompatActivity实现 在MapreadyCallback上,许可证管理员 {

字符串srno;
私人回收站查看rList,rList2;
私人直线酒店经理直线酒店经理;
私人分割分割;
私有静态数组列表PlacesList;
专用回收器视图。适配器,适配器1;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
rList=(RecyclerView)findViewById(R.id.recycle\u幻灯片\u列表);
PlacesList=新的ArrayList();
adapter=new BrowseHuntSlideAdapter(getApplicationContext(),PlacesList);
linearLayoutManager=新的linearLayoutManager(此);
linearLayoutManager.setOrientation(linearLayoutManager.VERTICAL);
dividerItemDecoration=新建
DividerItemDecoration(rList.getContext(),
linearLayoutManager.getOrientation());
rList.setLayoutManager(新的LinearLayoutManager(此,
LinearLayoutManager.VERTICAL,false);
列表附加装饰(分割装饰);
rList.setAdapter(适配器);
按钮edtbtn=(按钮)findViewById(R.id.edtbtn);
按钮donebtn=(按钮)findViewById(R.id.donebtn);
donebtn.setVisibility(视图不可见);
edtbtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
edtbtn.setVisibility(视图不可见);
donebtn.setVisibility(View.VISIBLE);
edtbtn.setText(“编辑”);
adapter.setCheckBoxVisibilityStatus(true);
}
});
donebtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
donebtn.setVisibility(视图不可见);
edtbtn.setVisibility(View.VISIBLE);
donebtn.setText(“完成”);
flagtrue=“false”;
adapter.notifyDataSetChanged();
mySelectPlaceAdd.clear();
mySelectplaceDesc.clear();
}
});
AddFirstStopToStopList();
}

在适配器中,创建如下界面:

public interface ListAction {
    public void onCheckBoxClick(int position);
}
然后,点击您的复选框,如下所示:

        holder.your_check_box.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    listAction.onCheckBoxClick(position);
                }
            }
        });
    @Override
    public void onCheckBoxClick(int position){
    //Do Whatever you want here..
    }
//Declare

private YourAdapterClass.ListAction listAction;

//Constructor

public YourAdapterClass(Context mContext, YourAdapterClass.ListAction listAction) {
        this.mContext = mContext;
        this.listAction = listAction;
    }
然后,在活动中实现该接口并重写其方法:

class YourActivity implements YouAdapterClass.ListAction
并覆盖其方法,如下所示:

        holder.your_check_box.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    listAction.onCheckBoxClick(position);
                }
            }
        });
    @Override
    public void onCheckBoxClick(int position){
    //Do Whatever you want here..
    }
//Declare

private YourAdapterClass.ListAction listAction;

//Constructor

public YourAdapterClass(Context mContext, YourAdapterClass.ListAction listAction) {
        this.mContext = mContext;
        this.listAction = listAction;
    }
简单

编辑

还可以通过构造函数将侦听器从活动传递到适配器类,如下所示:

mAdapter = new YouAdapterClass(getActivity(),this);
这是第二个参数

在适配器类中,执行以下操作:

        holder.your_check_box.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    listAction.onCheckBoxClick(position);
                }
            }
        });
    @Override
    public void onCheckBoxClick(int position){
    //Do Whatever you want here..
    }
//Declare

private YourAdapterClass.ListAction listAction;

//Constructor

public YourAdapterClass(Context mContext, YourAdapterClass.ListAction listAction) {
        this.mContext = mContext;
        this.listAction = listAction;
    }

在适配器中,创建如下界面:

public interface ListAction {
    public void onCheckBoxClick(int position);
}
然后,点击您的复选框,如下所示:

        holder.your_check_box.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    listAction.onCheckBoxClick(position);
                }
            }
        });
    @Override
    public void onCheckBoxClick(int position){
    //Do Whatever you want here..
    }
//Declare

private YourAdapterClass.ListAction listAction;

//Constructor

public YourAdapterClass(Context mContext, YourAdapterClass.ListAction listAction) {
        this.mContext = mContext;
        this.listAction = listAction;
    }
然后,在活动中实现该接口并重写其方法:

class YourActivity implements YouAdapterClass.ListAction
并覆盖其方法,如下所示:

        holder.your_check_box.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    listAction.onCheckBoxClick(position);
                }
            }
        });
    @Override
    public void onCheckBoxClick(int position){
    //Do Whatever you want here..
    }
//Declare

private YourAdapterClass.ListAction listAction;

//Constructor

public YourAdapterClass(Context mContext, YourAdapterClass.ListAction listAction) {
        this.mContext = mContext;
        this.listAction = listAction;
    }
简单

编辑

还可以通过构造函数将侦听器从活动传递到适配器类,如下所示:

mAdapter = new YouAdapterClass(getActivity(),this);
这是第二个参数

在适配器类中,执行以下操作:

        holder.your_check_box.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    listAction.onCheckBoxClick(position);
                }
            }
        });
    @Override
    public void onCheckBoxClick(int position){
    //Do Whatever you want here..
    }
//Declare

private YourAdapterClass.ListAction listAction;

//Constructor

public YourAdapterClass(Context mContext, YourAdapterClass.ListAction listAction) {
        this.mContext = mContext;
        this.listAction = listAction;
    }

在recycler视图适配器中创建一个方法,如public void hideCheckBox(); 在该方法中,通过标记获取复选框视图并将其隐藏。 必须向要隐藏的复选框添加标记。 您可以从活动中调用该方法,因为您有适配器实例

比如说,

在适配器中,方法如下:

public void hideCheckBox(){
  //get view by tag and hide it
  notifyDataSetChanged();
}
现在假设您的适配器名为mAdapter

 edtbtn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        edtbtn.setVisibility(View.INVISIBLE);
        donebtn.setVisibility(View.VISIBLE);
        edtbtn.setText("EDIT");

   // want to apply code here.
     mAdapter.hideCheckBox();
    }
});

在recycler视图适配器中创建一个方法,如public void hideCheckBox(); 在该方法中,通过标记获取复选框视图并将其隐藏。 必须向要隐藏的复选框添加标记。 您可以从活动中调用该方法,因为您有适配器实例

比如说,

在适配器中,方法如下:

public void hideCheckBox(){
  //get view by tag and hide it
  notifyDataSetChanged();
}
现在假设您的适配器名为mAdapter

 edtbtn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        edtbtn.setVisibility(View.INVISIBLE);
        donebtn.setVisibility(View.VISIBLE);
        edtbtn.setText("EDIT");

   // want to apply code here.
     mAdapter.hideCheckBox();
    }
});

当你说隐藏…你想一次隐藏所有复选框吗?如果是,那么