【发布时间】:2019-07-12 13:26:29
【问题描述】:
我的 ADAPTER 文件在这些文件中声明了布尔值和一个函数,即 setCheckboxVisibilityStatus(),如何在活动中调用该函数。如果我像 adapter.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 );
}
} }
还有我在活动中的编辑按钮......
公共类 Gotosafari 扩展了 AppCompatActivity 实现 OnMapReadyCallback, PermissionsListener {
String srno;
private RecyclerView rList, rList2;
private LinearLayoutManager linearLayoutManager;
private DividerItemDecoration dividerItemDecoration;
private static ArrayList<BrowseHuntSlideModel> PlacesList;
private RecyclerView.Adapter adapter, adapter1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rList = (RecyclerView) findViewById(R.id.recycle_slide_list);
PlacesList = new ArrayList<>();
adapter = new BrowseHuntSlideAdapter(getApplicationContext(),PlacesList);
linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
dividerItemDecoration = new
DividerItemDecoration(rList.getContext(),
linearLayoutManager.getOrientation());
rList.setLayoutManager(new LinearLayoutManager(this,
LinearLayoutManager.VERTICAL, false));
rList.addItemDecoration(dividerItemDecoration);
rList.setAdapter(adapter);
Button edtbtn = (Button) findViewById(R.id.edtbtn);
Button donebtn = (Button) findViewById(R.id.donebtn);
donebtn.setVisibility(View.INVISIBLE);
edtbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtbtn.setVisibility(View.INVISIBLE);
donebtn.setVisibility(View.VISIBLE);
edtbtn.setText("EDIT");
adapter.setCheckBoxVisibilityStatus(true);
}
});
donebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
donebtn.setVisibility(View.INVISIBLE);
edtbtn.setVisibility(View.VISIBLE);
donebtn.setText("DONE");
flagtrue= "false";
adapter.notifyDataSetChanged();
mySelectPlaceAdd.clear();
mySelectplaceDesc.clear();
}
});
addFirstStopToStopsList ();
}
【问题讨论】:
-
可以通过接口重定向到Activity。链接:stackoverflow.com/questions/49969278/…
-
检查我的答案..
-
你到底想达到什么目的.. 全选功能?在这种情况下,您应该更新模型并调用 notifydatasetchanged ... 如果您仍然希望在活动中处理您的 checkchange 侦听器.. 创建一个接口并将其传递给适配器,以便您可以调用回调...甚至发送更好的更高订单功能..
标签: android