Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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 如何通过滑动删除内部元素(RecyclerView内部的RecyclerView)?_Java_Android - Fatal编程技术网

Java 如何通过滑动删除内部元素(RecyclerView内部的RecyclerView)?

Java 如何通过滑动删除内部元素(RecyclerView内部的RecyclerView)?,java,android,Java,Android,有一个元素,其中RecyclerView位于RecyclerView内部。我想删除主要元素的子元素。但我不明白如何确定从列表中删除的位置。我这样做的尝试导致了应用程序的完全崩溃和不可预知的操作 enter code herepublic class MainRecyclerAdapter extends RecyclerView.Adapter<MainRecyclerAdapter.ViewHolder> { List<Section> sectionList; Ch

有一个元素,其中RecyclerView位于RecyclerView内部。我想删除主要元素的子元素。但我不明白如何确定从列表中删除的位置。我这样做的尝试导致了应用程序的完全崩溃和不可预知的操作

enter code herepublic class MainRecyclerAdapter extends RecyclerView.Adapter<MainRecyclerAdapter.ViewHolder> {

List<Section> sectionList;
ChildRecyclerAdapter childRecyclerAdapter;


public MainRecyclerAdapter(List<Section> sectionList) {
    this.sectionList = sectionList;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
    View view = layoutInflater.inflate(R.layout.section_row, parent, false);
    return new ViewHolder(view);
}

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

    Section section = sectionList.get(position);
    String sectionName = section.getSectionName();
    List<String> items = section.getSectionItems();

    holder.sectionNameTextView.setText(sectionName);

    childRecyclerAdapter = new ChildRecyclerAdapter(items);
    holder.childRecyclerView.setAdapter(childRecyclerAdapter);


}

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

class ViewHolder extends RecyclerView.ViewHolder {

    TextView sectionNameTextView;
    RecyclerView childRecyclerView;

    public ViewHolder(@NonNull final View itemView) {
        super(itemView);

        sectionNameTextView = itemView.findViewById(R.id.sectionNameTextView);
        childRecyclerView = itemView.findViewById(R.id.childRecyclerView);


        ItemTouchHelper helper = new ItemTouchHelper(
                new MainRecyclerAdapter.ItemTouchHandler(getAdapterPosition(),
                        ItemTouchHelper.LEFT)
        );

        helper.attachToRecyclerView(childRecyclerView);
    }
}

private class ItemTouchHandler extends ItemTouchHelper.SimpleCallback {

    ItemTouchHandler(int dragDirs, int swipeDirs) {
        super(dragDirs, swipeDirs);
    }

    @Override
    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
        int from = viewHolder.getAdapterPosition();
        int to = target.getAdapterPosition();

        Collections.swap(sectionList.get(viewHolder.getAdapterPosition()).getSectionItems(), from, to);
        notifyItemMoved(from, to);

        return true;
    }


    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
}

        sectionList.get(    ).getSectionItems().remove(viewHolder.getAdapterPosition());
        childRecyclerAdapter.notifyItemRemoved(viewHolder.getAdapterPosition());

    }
}