RecyclerView 与 in recyclerView 一起启动 ActivityOnresult

2024-01-12

我有一个回收器视图(A),其中包含另一个回收器视图(B)。当我单击 recyclerview(A) 项目中的加号图标时,它会打开一个带有 recyclerview(C) 的新活动。长按并选择几个项目,然后单击“完成”。这需要更新我单击加号图标的 recyclerview (A) 项目上的 recyclerview(B)。

但相反,包含 recyclerview(B) 的 recyclerview(A) 的所有项目都被更新。

private void displayUpcomingEvents(View view) {
    upcomingEventsArrayList = new ArrayList<>();
    upcomingEvents = new UpcomingEvents("Meet and greet", "Coffee Connect | ", "Phython", "21 - ", "Jun - ", "22", "Jun", "21 Jun 10 AM", "Washinton");
    upcomingEventsArrayList.add(upcomingEvents);
    upcomingEvents = new UpcomingEvents("Meet and greet", "Coffee Connect | ", "Phython", "21 - ", "Jun - ", "22", "Jun", "21 Jun 10 AM", "Washinton");
    upcomingEventsArrayList.add(upcomingEvents);
    upcomingEvents = new UpcomingEvents("Meet and greet", "Coffee Connect | ", "Phython", "21 - ", "Jun - ", "22", "Jun", "21 Jun 10 AM", "Washinton");
    upcomingEventsArrayList.add(upcomingEvents);
    upcomingEventsAdapter = new RecyclerAdapterUpcomingEvents(getContext(), upcomingEventsArrayList);

    recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view_upcoming_event);

    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getAppContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setHasFixedSize(true);
    recyclerView.setAdapter(upcomingEventsAdapter);

}



class RecyclerAdapterUpcomingEvents extends RecyclerView.Adapter<RecyclerAdapterUpcomingEvents.MyViewHolder> {

    private List<UpcomingEvents> upcomingEventsList;
    private Context context;
    private LayoutInflater inflater;


    RecyclerAdapterUpcomingEvents(Context context, List<UpcomingEvents> upcomingEventsList) {
        this.context = context;
        this.upcomingEventsList = upcomingEventsList;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View rootView = inflater.inflate(R.layout.card_view_upcoming_event, parent, false);
        return new RecyclerAdapterUpcomingEvents.MyViewHolder(rootView);
    }

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

        UpcomingEvents upcomingEvents = upcomingEventsList.get(position);

        holder.eventUpcomingName.setText(upcomingEvents.getEventUpcomingName());
        holder.eventUpcomingType.setText(upcomingEvents.getEventUpcomingType());
        holder.eventUpcomingDate.setText(upcomingEvents.getEventUpcomingDateStart() + upcomingEvents.getEventUpcomingDateEnd());
        holder.eventUpcomingMonth.setText(upcomingEvents.getEventUpcomingMonthEnd() + upcomingEvents.getEventUpcomingMonthEnd());
        holder.eventUpcomingAlarmNotify.setText(upcomingEvents.getEventUpcomingAlarmNotify());
        holder.eventUpcomingPlace.setText(upcomingEvents.getEventUpcomingPlace());

        holder.eventUpcomingAddPeople.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Activity origin = (Activity) context;
                origin.startActivityForResult(new Intent(getAppContext(), ContactsActivity.class), CONTACT_CODE);
            }
        });


        holder.contactRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
        contactAdapter = new ContactAdapter(getAppContext(), R.layout.card__contact_image, contactsList);`enter code here`
        holder.contactRecyclerView.setAdapter(contactAdapter);

    }


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

    class MyViewHolder extends RecyclerView.ViewHolder {

        private TextView eventUpcomingName, eventUpcomingType, eventUpcomingDate, eventUpcomingMonth, eventUpcomingAlarmNotify, eventUpcomingPlace, eventUpcomingYes, eventUpcomingInterested, eventUpcomingNo;
        private ImageView eventUpcomingAddPeople, eventUpcomingmore;
        private RecyclerView contactRecyclerView;


        MyViewHolder(View itemView) {
            super(itemView);
            eventUpcomingName = (TextView) itemView.findViewById(R.id.event_name);
            eventUpcomingType = (TextView) itemView.findViewById(R.id.event_type);
            eventUpcomingDate = (TextView) itemView.findViewById(R.id.event_date);
            eventUpcomingMonth = (TextView) itemView.findViewById(R.id.event_month);

            eventUpcomingAlarmNotify = (TextView) itemView.findViewById(R.id.event_time_notify);
            eventUpcomingPlace = (TextView) itemView.findViewById(R.id.event_place);

            eventUpcomingYes = (TextView) itemView.findViewById(R.id.event_yes);
            eventUpcomingInterested = (TextView) itemView.findViewById(R.id.event_interested);
            eventUpcomingNo = (TextView) itemView.findViewById(R.id.event_no);

            eventUpcomingmore = (ImageView) itemView.findViewById(R.id.event_more);
            eventUpcomingAddPeople = (ImageView) itemView.findViewById(R.id.hex_one_event);

            contactRecyclerView = (RecyclerView) itemView.findViewById(R.id.upcome_events_recycler);

        }
    }
}



@Override
public void onReceived(int requestCode, int resultCode, Intent data) {

    if (requestCode == CONTACT_CODE && resultCode == RESULT_OK && data != null) {

        List<Contact> contactsLists = (ArrayList<Contact>) data.getSerializableExtra("contacts");
        contactsList.clear();
        contactsList.addAll(contactsLists);

        contactAdapter.setContactList(contactsLists);

        upcomingEventsAdapter = new RecyclerAdapterUpcomingEvents(getContext(), upcomingEventsArrayList);
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getAppContext());
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setHasFixedSize(true);
        recyclerView.setAdapter(upcomingEventsAdapter);
    }
}

CardView

        <android.support.v7.widget.RecyclerView
            android:id="@+id/upcome_events_recycler"
            android:layout_width="match_parent"
            android:layout_height="52dp"
            android:layout_below="@id/event_place"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="52dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp">

        </android.support.v7.widget.RecyclerView>

        <ImageView
            android:id="@+id/hex_one_event"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_alignParentEnd="true"
            android:layout_below="@id/event_place"
            android:layout_margin="8dp"
            android:src="@drawable/hex_src_plus" />

首先通过以下方式更改您的代码:

   holder.eventUpcomingAddPeople.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Activity origin = (Activity) context;
            Intent i = new Intent(getAppContext(), ContactsActivity.class);
            i.putExtra("selectedPosition", position);
            origin.startActivityForResult(i, CONTACT_CODE);
        }
    });

@Override
public void onReceived(int requestCode, int resultCode, Intent data) {

if (requestCode == CONTACT_CODE && resultCode == RESULT_OK && data != null) {
    int result = data.getIntExtra("selectedPosition","put a default value in case of null");
    List<Contact> contactsLists = (ArrayList<Contact>) data.getSerializableExtra("contacts");
    contactsList.clear();
    contactsList.addAll(contactsLists);

    contactAdapter.setContactList(contactsLists);
     upcomingEventsAdapter.notifyItemChanged(result);
}
}

在第二个活动中,当您单击“完成”时,您应该会看到类似的内容:

int param = getIntent().getIntExtra("selectedPosition");
Intent resultIntent = new Intent();
resultIntent.putExtra("contacts", Your selected contacts);
resultIntent.putExtra("selectedPosition", param);

setResult(RESULT_OK, resultIntent);
finish();

希望它清晰且有帮助:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RecyclerView 与 in recyclerView 一起启动 ActivityOnresult 的相关文章

随机推荐

  • R - 将数据框行拆分为两行

    我有 2 个表 数据和参考 下面的玩具示例 这些表有 START 和 END 位置 我想检查它们是否重叠 使用 data table 包中的 foverlaps 之类的东西 然后拆分值 如下所示 gt data lt data table
  • Winforms MVP 网格事件问题

    我正在尝试为 WINFORMS 实现 MVP 模式 它是一个简单的按钮和网格 单击按钮时 网格将加载 用户可以将值填充到网格中 对于我的按钮单击事件 我有这样的事情 presenter LoadGrid 这简单明了 我的问题是 关于网格 我
  • 如何从任何地方(任何目录)运行perl脚本

    我有一个 perl 脚本存在于以下路径 home Leen Desktop Tools bin tool pl 每次我想运行这个工具时我都会进入终端 gt 然后将目录更改为 bin gt 然后我通过编写来运行 perl bin gt per
  • C - 为什么只有 char 数组以 null 结尾? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 为什么 char 数组需要以 NULL 结尾 例如 为什么 int 数组不需要在末尾有分隔符 char 不必以 NULL 终止 这是当您想
  • .forEach循环:使用变量

    我循环遍历一组 16 个 id 并分配一个eventListener给每一位 我想向我的 php 文件发送一个数字 1 代表第一个 id 2 代表第二个 等等 但似乎i比我想要的更有活力 每个id发送17 klasses forEach f
  • Lucene LongField 精确搜索与查询

    如何使用 TermQuery 来精确匹配 LongField 考虑上的警告数字实用程序 API http lucene apache org core 3 6 0 api core org apache lucene util Numeri
  • 当精细头记录时将文件分割成块(java 8)

    我有一段代码 可以在找到起始记录时将文件 拆分 为一些块 List
  • 在大多数 IDE 中,自动完成功能不适用于 PyQT4 和 PyKDE4

    我正在尝试使用 python 开发等离子体 我尝试过使用 pydev 的 eclipse 使用 pythoncomplete 的 vim PIDA 以及 Komodo 但是它们都不能为我提供属于 PyQT4 或 PyKDE4 的类的方法名称
  • C#/.NET:关闭主窗口之外的另一个进程

    我只是想询问您关于如何 终止 正在运行的应用程序 进程的意见 建议是 C 现在 我有以下代码 Process myProcess private void btnOpen Click object sender RoutedEventArg
  • 计算一系列值变化的次数

    考虑一下这个系列 s 1 1 1 1 1 1 计算此类序列中值变化的次数最省时的方法是什么 在此示例中 答案为 3 从 1 到 1 再回到 1 再到 1 我将使用numpy np diff s 0 sum Out 497 3
  • 如何在 Ubuntu 21.10 中构建不带 zstd 压缩的 .deb?

    我正在使用构建 debdpkg buildpackage在 Ubuntu 21 10 上 然后在 Debian 系统中提取 该系统不使用 zstd 压缩 在构建 deb 时如何切换到旧的压缩 运行命令 compression xz或同等的
  • 当想要使用 git bash 推送到 GitHub 时如何修复 SSL 证书错误?

    我正在尝试在 Windows 8 上使用 git bash 向 GitHub 推送一个简单的 Web 应用程序 但是当我执行 git Push origin master 时 它显示 致命 无法访问 https com git SSL 证书
  • 使用 Bulk Collect 将批量记录插入到远程数据库 (dblink)

    我想使用 DBLINK FMATLINK 将来自不同表的大量记录插入到目标远程表 Audition Detail 中 我已经使用了批量收集 但它抛出错误 我也浏览了一些链接 克服通过数据库链接批量插入的限制 https stackoverf
  • 在 ASP.NET Core 中生成报告的最佳方法是什么?

    谁能告诉我如何在 ASP NET Core 程序中创建报告 我想将报告导出为 Excel PDF 和 Word 在 ASP NET Core 中生成报告的最佳方法是什么 我正在寻求专业人士的建议 我正在Asp Net Core 2 1 中做
  • 如何使用 boost::asio 的 async_read_some() 读取所有可用数据,而无需等待新数据到达?

    我使用 boost asio 进行串行通信 我想监听某个端口上的传入数据 所以 我使用注册一个 ReadHandlerserialport async read some 然后创建一个单独的线程来处理异步处理程序 调用io service
  • 使用 git 提交日期作为证据

    我们的存储库多年来约有 7000 次提交 我们想使用 git 存储库作为法庭优先性的证据 有没有办法表明旧的 git 提交没有改变 至少作者日期和提交日期 并且在某种程度上是它们看起来的样子 在 Git 中可以更改旧的提交日期 但它确实会使
  • Linux:仅设置目录权限[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须更改的权限htdocsapache 中的目录属于某个组并具有一定的读 写 执行能力 目录需要有 775 权限 文件需要有 664 权
  • “Ruby on Rails-教程”期间的路由错误

    似乎这里有些人遇到了这个问题 但我在另一个主题中找不到任何解决方案 我正在学习 Ruby on Rails 教程的第 3 章 处理静态页面 当我想在本地主机上打开它们时 它会在浏览器中显示 路由错误 我的 Ruby 目前版本为 1 9 3
  • 为什么 VS 2008 IDE 不记得我的偏好设置?

    这是一个很小的问题 我只是在问编译 http imgs xkcd com comics compiling png 由于某种原因 当我关闭并重新打开时 我的 VS 2008 IDE 不记得我的窗口首选项 它会重置窗口宽度 位置 外观等 让我
  • RecyclerView 与 in recyclerView 一起启动 ActivityOnresult

    我有一个回收器视图 A 其中包含另一个回收器视图 B 当我单击 recyclerview A 项目中的加号图标时 它会打开一个带有 recyclerview C 的新活动 长按并选择几个项目 然后单击 完成 这需要更新我单击加号图标的 re