我想创建一个自定义ListView
。
最初,自定义ListView
有一个数据数组,但是当用户点击其中一个列表项时,它会从当前数组中删除并添加到另一个列表项中。如果用户点击第二个数组,则将列表项添加回第一个数组。
请建议如何应用逻辑来执行此操作。
更新:我只想使用一个listview / recyclerview。
以下是截图..
答案 0 :(得分:0)
关于对象切换 - 这是列表之间的简单转换,如果插入和删除是基于索引的,请事先知道,例如:
contacts.add(iLocation, ContactObject);
favorites.remove(iOtherLocation);
关于ListView
内容,我建议转换为RecyclerView
,让我们构建 一般 方案:
您有一个屏幕(活动或片段),其中包含一个列表(实现可以是ListView
或Recycler
),另一个屏幕包含另一个列表。
在两个列表中都有适配器,您可以在其中实现列表中对象点击的逻辑。
点击将对象直接转移到另一个列表 OR 到一个临时的Object holder(因为你可能需要它用于其他东西),在这种情况下你需要从另一个视图中拉出该对象,无论是将其从当前视图中移除。
切换到另一个视图,然后刷新它。
一个简单的方法 -
假设屏幕相同,只使用一个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中删除并将其添加到另一个布局中