Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:通过点击程序添加的视图打开一个对话框_Java_Android_Adapter - Fatal编程技术网

Java Android:通过点击程序添加的视图打开一个对话框

Java Android:通过点击程序添加的视图打开一个对话框,java,android,adapter,Java,Android,Adapter,我拥有的:一个按钮,单击该按钮可将自定义视图(按钮、文本视图和编辑文本)添加到recyclerView中。单击某个视图中的按钮时,该视图将被删除 我想要的:一个按钮,单击该按钮可将自定义视图(按钮、文本视图和编辑文本)添加到RecycleView中。单击某个视图中的按钮时,将显示一个对话框片段 我想我可以在适配器内完成这项工作,但感觉这会打乱整个项目体系结构,所以我需要一种在活动类中完成这项工作的方法 MyAdapter.java public class MyAdapter extends R

我拥有的:一个按钮,单击该按钮可将自定义视图(按钮、文本视图和编辑文本)添加到recyclerView中。单击某个视图中的按钮时,该视图将被删除

我想要的:一个按钮,单击该按钮可将自定义视图(按钮、文本视图和编辑文本)添加到RecycleView中。单击某个视图中的按钮时,将显示一个对话框片段

我想我可以在适配器内完成这项工作,但感觉这会打乱整个项目体系结构,所以我需要一种在活动类中完成这项工作的方法

MyAdapter.java

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private List<String> items = new ArrayList<>();

    public void addItem(String name) {
        items.add(name);
        notifyItemInserted(items.size() - 1);
    }

    public void removeItem(int position) {
        items.remove(position);
        notifyItemRemoved(position);
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.grid_item_button, parent, false);

        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
    }

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


    static int i;

    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private Button button;
        private TextView ClassName;
        private EditText EditName;

        public ViewHolder(View itemView) {
            super(itemView);
            ClassName = (TextView) itemView.findViewById(R.id.ClassName);
            button = (Button) itemView.findViewById(R.id.grid_button);
            EditName = (EditText) itemView.findViewById(R.id.editName);
            button.setOnClickListener(this);
            ClassName.setId(++i);
            EditName.requestFocus();

        }

        @Override
        public void onClick(View v) {
            removeItem(getAdapterPosition());
        }
    }

}

有什么原因不能将一个项目添加到RecyclerView的适配器并刷新它?你的意思是什么?我不确定我是否正确理解了你的问题。你只是想改变按钮的功能?或者您希望在RecyclerView中有两种不同的行?所有行和添加的视图看起来都一样,只是ID不同。我想要的是,当我点击其中一个添加的视图时,打开一个DialogFragment,你看到了吗?
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.ClassesRecyclerView);
    assert recyclerView != null;
    recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
    final MyAdapter adapter = new MyAdapter();
    recyclerView.addItemDecoration(new SampleItemDecoration());
    recyclerView.setAdapter(adapter);
    recyclerView.setNestedScrollingEnabled(false);

    adapter.addItem("");

    findViewById(R.id.button_add).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            adapter.addItem("");
        }
    });