Java 获取值并关闭带有循环视图和自定义适配器的对话框
在我的应用程序中,我会显示一个带有自定义适配器的对话框,其中有一个项目列表。我想获取在对话框上单击的项目的值并关闭它。。。。我只能正确地显示它 以下是我创建对话框的方式:Java 获取值并关闭带有循环视图和自定义适配器的对话框,java,android,android-recyclerview,android-adapter,Java,Android,Android Recyclerview,Android Adapter,在我的应用程序中,我会显示一个带有自定义适配器的对话框,其中有一个项目列表。我想获取在对话框上单击的项目的值并关闭它。。。。我只能正确地显示它 以下是我创建对话框的方式: AlertDialog dialogBuilder = new AlertDialog.Builder(mContext).create(); LayoutInflater inflater = getLayoutInflater(); View dialogView = inflater.
AlertDialog dialogBuilder = new AlertDialog.Builder(mContext).create();
LayoutInflater inflater = getLayoutInflater();
View dialogView = inflater.inflate(R.layout.banderes_dialog, null);
myrecyclerview = dialogView.findViewById(R.id.recycleview);
myrecyclerview.setLayoutManager(new LinearLayoutManager((dialogView.getContext())));
RecyclerViewAdapterLanguages recyclerAdapter = new RecyclerViewAdapterLanguages(dialogView.getContext(), lstLanguages);
myrecyclerview.addItemDecoration(new DividerItemDecoration(dialogView.getContext(), DividerItemDecoration.VERTICAL));
myrecyclerview.setAdapter(recyclerAdapter);
dialogBuilder.setView(dialogView);
dialogBuilder.show();
这是我的oncreateviewholder:
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v;
v= LayoutInflater.from(mContext).inflate(R.layout.bandera_item,parent,false);
final MyViewHolder vHolder = new MyViewHolder(v);
vHolder.item_language.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Toast.makeText(mContext, "Click on an item", Toast.LENGTH_SHORT).show();
}
});
return vHolder;
}
我如何知道该项目点击了我的主要活动。如何关闭oncreateviewholder上的对话框(在祝酒之后)
谢谢 您可以拥有一个接口,并在活动上使用它的回调来关闭对话框
public interface OnItemClickListner {
void OnItemClicked(View view, int position);
}
将侦听器传递给适配器,然后在项目中单击
vHolder.item_language.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Toast.makeText(mContext, "Click on an item",
Toast.LENGTH_SHORT).show();
onItemClickListner.OnItemClicked(v, position);
}
});
然后在活动中实现接口
在此之后,您就有了覆盖方法,可以在其中关闭对话框
@Override
public void OnItemClicked(View view, int position) {
dialog.dismiss();
}
谢谢你,维卡斯,看来这是正确的选择。但是我犯了一个错误。我定义了一个全局单击列表监视器ClickListner;变量,然后调用mOnItemClickListner.OnItemClicked(v,位置);但是我遇到了这个错误:尝试在空对象引用上调用接口方法“void com.test.sample.adapters.RecycleServiceAdapterLanguages$OnItemClickListner.OnItemClicked(android.view.view,int)”,这可能是因为您没有将接口引用传递给适配器。必须像
private void setListener(OnItemClickListner monitemcclicklistner){this.monitemcclicklistner=monitemcclicklistner}
一样在适配器中设置监听器,同时在活动中初始化适配器。嗨,Vikas,我想我在适配器中做了部分(只需在上面复制文本),但是我不知道如何在活动中初始化侦听器。。。。感谢您的帮助执行此操作myrecyclerview.setListener(新建OnItemClickListner(){public void OnItemClicked(视图视图,int位置){dialog.dismise();}})代码>谢谢你的好话,很高兴帮助你!!