在两个单独的Array ListView之间添加和删除

时间:2016-09-02 14:27:23

标签: android listview

我想创建一个自定义ListView

最初,自定义ListView有一个数据数组,但是当用户点击其中一个列表项时,它会从当前数组中删除并添加到另一个列表项中。如果用户点击第二个数组,则将列表项添加回第一个数组。

请建议如何应用逻辑来执行此操作。

更新:我只想使用一个listview / recyclerview。

以下是截图..

enter image description here enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

关于对象切换 - 这是列表之间的简单转换,如果插入和删除是基于索引的,请事先知道,例如:

contacts.add(iLocation, ContactObject);
favorites.remove(iOtherLocation);

关于ListView内容,我建议转换为RecyclerView,让我们构建 一般 方案:

  1. 您有一个屏幕(活动或片段),其中包含一个列表(实现可以是ListViewRecycler),另一个屏幕包含另一个列表。

  2. 在两个列表中都有适配器,您可以在其中实现列表中对象点击的逻辑。

  3. 点击将对象直接转移到另一个列表 OR 到一个临时的Object holder(因为你可能需要它用于其他东西),在这种情况下你需要从另一个视图中拉出该对象,无论是将其从当前视图中移除。

  4. 切换到另一个视图,然后刷新它。

  5. 一个简单的方法 -

    假设屏幕相同,只使用一个Activity,持有一个RecyclerView,并处理2个适配器,每个适用于每个列表,适配器允许您轻松处理点击,并带有对象的索引单击,单击执行信息交换操作,活动处理可视交换操作。

    非常通用示例将是:

    //init everything obviously ;)
    List<ContactObject> contacts;
    List<ContactObject> favoritesContacts;
    
    //the AdapteListener is an interface declared inside the adapter
    mContactsRecyclerAdapter = new ContactsRecyclerAdapter(this, contacts,new ContactsRecyclerAdapter.AdapterListener()
        {
            @Override
            public void cellClicked(int iIndex, ContactObject object)
            {
               favoritesContacts.add(iIndex, ContactObject);
               contacts.remove(iIndex);
               mContactsRecyclerAdapter.notifyDataSetChanged();
               mFavoritesRecyclerAdapter.notifyDataSetChanged();
               mRecyclerView.swapAdapter(mFavoritesRecyclerAdapter, false);
            }
         });
    

    反之亦然另一个适配器。

    希望这会有所帮助,如果您遇到问题我会发表评论,并且我会更新。

答案 1 :(得分:0)

请使用Linearlayout

实现自定义视图扩展

自定义视图有2个子Linearlayout,其中将添加此自定义视图

首次添加第一个Linearlayout中的所有元素,并根据用户操作,请从第一个Linearlayout中删除并将其添加到另一个布局中