获取值并使用回收视图和自定义适配器关闭对话框

时间:2019-05-10 18:08:37

标签: java android android-recyclerview android-adapter

在我的应用程序中,我显示一个带有自定义适配器的对话框,其中包含项目列表。我想获取在对话框中单击的项目的值并关闭它。...我只能正确显示它。

这是我创建对话框的方式:

      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上的对话框(在吐司之后)

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以拥有一个界面,并在活动中使用它的回调来关闭对话框

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();
}