- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在我的 App Preferences 上做一些类似于 iOS 可编辑 UITableView 的事情。它基本上是一个列表,用户可以在其中添加项目、删除项目或重新排序。我确信这是一个常见问题,但我还没有找到任何关于如何做到这一点的例子。
现在我正尝试通过嵌套两个 PreferenceScreens 并在它们之间移动项目来做到这一点:
我将项目存储在两个不同的数组中(“已添加”项目和“未添加”项目)并使用 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
以保持原样。
这种方法的主要好处是,您可以在同一个 Activity
中拥有两个数据集,这样您就可以访问两个适配器,并且可以轻松地从一个实例中移动数据另一个,在你需要的 ListView
上用 View.VISIBLE
或 View.GONE
调用 setVisibility()
,所以它使流程更容易。
关于android - 应用程序首选项的可编辑项目列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264755/
有谁知道如何使 DIV 的行为方式使其始终尝试占用其最大空间(无论内容如何)? 例如,如果我有一个 max-height 的 DIV的 600px和一个 min-height的 200px ,我怎样才
考虑两个表表A和表B 表A |id|driver_id|vehicle_id|is_allowed|license_number|driver_name| 表B |id|driver_id|vehic
对于 ASP.NET 应用程序,自定义脏话删除器/替换器的最佳实践实现方法是什么? 如果这是一个数据表解决方案,是否有免费的资源来获取数据? (类似于找到可以导入到系统中进行拼写检查的公共(publi
有很多 jquery 工具提示插件。 我应该使用哪一个?为什么? 最佳答案 我们使用过qTip在我们的一个项目中,因为它符合我们的所有要求,开发和维护良好,附带优秀的文档和已经很漂亮的模板,并且还为我
我在Internet上四处张望,找不到相关信息。我的程序需要向PowerShell配置文件中编写一些PowerShell代码。如果没有配置文件,我的程序将创建一个。问题是应使用哪种编码来创建Power
在 D、int、uint 中使用 foreach 时,循环索引的首选类型是什么?或者只是通过省略类型自动实现? 最佳答案 一般来说,索引应该是size_t。与长度相同。如果您尝试使用 int 或 ui
这个问题在这里已经有了答案: Repeat each row of data.frame the number of times specified in a column (9 个回答) 2年前关闭
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我有一个看起来像这样的字符串: "Element 1 | Element 2| Element 3: element 4" 我想对冒号后面的源字符串部分进行子串(到源字符串的末尾),但如果没有冒号,那
我接受任何解释语言 Perl、Python、Bash 等。但我更喜欢 Perl,因为它是我想要学习的。我有一个时间戳列表,例如: 17:31:16 17:31:16 17:31:18 17:31:29
我想在后台运行程序。首选 C#我想把图标放在托盘里。在指定的时间同步文件夹(我知道如何同步文件夹)。如何在后台运行它并开始同步(例如凌晨 2 点)? 最佳答案 您需要考虑使用 windows sche
我有一个 onChange 事件处理程序,它的结构如下: (e) => (value => this.setState(prevState => ({ form: {
我想在windows 7中捕获删除操作。如果用户从计算机上删除了文件,我需要在文件被删除时存储一条记录,以及删除了哪个文件。 一般文件操作,不针对特定文件夹或软件。所以假设用户从 d:\testFol
是否有任何库或开源函数可以近似通过以不规则间隔获取的一些值来描述的线下的面积? 首选 Action Script,但 Java 也可以正常工作。 最佳答案 您可以使用as3mathlib数学图书馆。这
对于我的网络应用程序,我希望提供给用户的图像具有响应性。此外,我还想在图像标签中指定 width 和 height 属性,这样在移动连接速度较慢的情况下,就不会出现浏览器重排。 是否可以通过使用纯 H
在展示公司 Logo 时,我今天看到了一些新东西。 他们在 h1 标签上设置了高度和宽度以及 overflow:hidden 并在 h1 标签内的 a 标签上设置了负边距以防止文本显示。 代码是这样的
我使用 Lucene 库开发了一个索引和搜索应用程序。但是这个库在我的上下文中在自定义排名方面有一些限制,除了它的性能之外,我需要可扩展性和访问各种词频等。是否有任何强大的开源全文库可用? 最佳答案
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
这是一个关于当我需要在列表中查找对象实例时如何实现 equals 方法的问题,该实例的值是我在其成员中拥有的实例之一。 我有一个实现了 equals 的对象: class User { pri
我是一名优秀的程序员,十分优秀!