Android 如何在自己的活动中处理Recyclerview项以设置可见性?
在这些文件中,我声明了布尔值和一个函数,即setCheckboxVisibilityStatus(),以及如何在活动中调用该函数。如果我像适配器一样调用.setCheckboxVisibilityStatus(),它会显示错误 公共类BrowseHuntSlideAdapter扩展了RecyclerView.Adapter{Android 如何在自己的活动中处理Recyclerview项以设置可见性?,android,Android,在这些文件中,我声明了布尔值和一个函数,即setCheckboxVisibilityStatus(),以及如何在活动中调用该函数。如果我像适配器一样调用.setCheckboxVisibilityStatus(),它会显示错误 公共类BrowseHuntSlideAdapter扩展了RecyclerView.Adapter{ public LayoutInflater inflater; private ArrayList<BrowseHuntSlideModel> dataMode
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();
}
});
当你说隐藏…你想一次隐藏所有复选框吗?如果是,那么