gpt4 book ai didi

android - 应用程序首选项的可编辑项目列表?

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:45 25 4
gpt4 key购买 nike

我正在尝试在我的 App Preferences 上做一些类似于 iOS 可编辑 UITableView 的事情。它基本上是一个列表,用户可以在其中添加项目、删除项目或重新排序。我确信这是一个常见问题,但我还没有找到任何关于如何做到这一点的例子。

现在我正尝试通过嵌套两个 PreferenceScreens 并在它们之间移动项目来做到这一点:

enter image description here

我将项目存储在两个不同的数组中(“已添加”项目和“未添加”项目)并使用 addPreference() 动态构建两个屏幕,但我不确定它是否是好主意,也不知道如何让用户删除和重新订购商品。

如何做到这一点?

最佳答案

因为我找不到重新排序 PreferenceScreen 的方法,所以有另一种方法。例如,您可以定义一个 Activity,并在两个 ListView 中定义。这个想法是在它们两个上都使用 visibility 属性,所以每次你都会将其中一个设置为 visible 并且 gone另一个,或者 gone 如果你需要做一些像你的第一个屏幕截图那样的事情。

您需要为它们中的每一个扩展一个 ArrayAdapter(或者只有一个 ArrayAdapter 并将其用于两个 ListView,更改布局或初始数据集,或两者)。就布局而言,您可以简单地使用 LinearLayout 定义一个自定义布局,并在其中定义一个 ImageView 和一个 TextView 来实现布局截图中显示的效果,类似这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
android:orientation="horizontal" >

<ImageView
android:id="@+id/layoutImage"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="2"
android:background="@drawable/..."/>

<TextView
android:id="@+id/layoutText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:layout_gravity="left"
android:numLines="1"
android:textSize="18sp" />
</LinearLayout>

定义后,自定义 ArrayAdapter 的第二个参数是布局,因此您只需将 R.id.your_new_layout 引用传递给它,行将被创建

对于项目的删除,它很容易实现,因为您可以简单地在自定义适配器的 getView() 方法中定义一个 onClickListener() 并将该项目从数据集(您将在 ArrayAdapter 中对其进行跟踪)。 ListView 具有 notifyDataSetChanged() 方法,可以自动从列表中删除项目,您甚至可以添加动画以使其在视觉上更具吸引力。

在这种情况下,重新排序选项似乎是最费力的。 ListView 默认情况下将按“自己的顺序”呈现行,这意味着基本上您会看到它未排序。这可以避免通过您的 ArrayAdapter 调用 .sort() 方法,但您也不希望这样做,因为您希望允许您的用户以他们的方式重新排序列表, 所以我想到了两个想法(都没有经过测试):

  • 尝试使用 onDragEvent 实现此目的。根据this ,您可能能够处理拖动 ListView 的一行以处理某些事件。通过这种方式,您可能可以看到用户将项目放在何处,并在您的 Adapter 中重新排序 List 以保持原样。

  • 外部图书馆。似乎有一些外部库已经实现了这一点,例如,您可能想查看 this , thisthis .

这种方法的主要好处是,您可以在同一个 Activity 中拥有两个数据集,这样您就可以访问两个适配器,并且可以轻松地从一个实例中移动数据另一个,在你需要的 ListView 上用 View.VISIBLEView.GONE 调用 setVisibility(),所以它使流程更容易。

关于android - 应用程序首选项的可编辑项目列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com