java - Android Studio 处理多用户。如何修改布局的可点击参数?
问题描述
我是一名初学者开发人员,为不同用户的布局开发应用程序。在这个应用程序中有两种用户,一种可以读取属性,另一种可以读取和写入属性。
我必须在主布局中动态添加几行,为此我使用了 inflate 过程。
这里的行布局:
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:onClick="sendMessage">
....
</androidx.constraintlayout.widget.ConstraintLayout>
现在我想根据用户的类型将可点击属性更改为 true/false。(如果用户是写用户,他可以单击布局以启动新活动并修改行对象的属性)。请注意,我想使用一个活动来处理两个用户,因为通常我只需要修改几个属性,例如 3 个可点击属性和 3 个可见属性。所以我在string.xml中写了这些字符串:
<string name="user_0_clickable">false</string>
<string name="user_1_clickable">true</string>
我想动态添加行并根据字符串“user_0_clickable”或“user_1_clickable”更改它们的可点击属性(登录后由意图传递)。有可能吗?如果我必须更改很少的属性,这是我范围的最佳方式吗?
解决方案
您的User
对象将有一些字段,例如userType
或readWriteType
具有某种布尔值或整数值,例如 0 或 1。因此,在您的或Activity
或Fragment
(如果您正在使用)中,您基本上是在设置数据(类似 等)。 ),只需执行以下操作:(
或 do ,您使用的任何字段来指示 的读取或写入状态)然后:
然后继续。
我认为您不需要使用with字段。
您不需要动态膨胀任何组件,只需将所有组件预先放在 XML 布局中,然后只需分配ViewHolder
Adapter
RecyclerView
textView.setText("user.getName());
swich(user.getUserType())
switch(user.getReadWriteType())
User
case userWrite: whateverTextField.setEditable(true);
whateverButton.setClickable(true);
break;
string.xml
user_0_clickable
textFields
根据您的要求,不可编辑和按钮不可见或不可点击。
推荐阅读
- python - scikit learn Random Forest Classifier 概率阈值
- python - 在 Scrapy 中使用请求元以不同的顺序传递参数
- javascript - 离线时获取 Firestore 文档失败并且不回退到本地存储
- git-branch - Git-一些如何创建具有两个名称的单个分支我如何使其成为单个分支
- mysql - 连接三个表A、B、C并返回mysql中A中的common
- rest - 为客户端服务器案例实现进度条
- azure-devops - 根据链接的 parentId 过滤 WIQL
- typescript - 作为函数参数的函数
- angular - 无法从 nativescript -angular 将图像上传到 Firebase 存储
- java - 尝试使用本地代理类型连接到 SSH 服务器?