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