我的任务是重新制作一个基本上在工作中的整个应用程序。从本质上讲,该应用程序只是一个包含多种卡片类型的提要(想想 facebook 的更新卡片、照片卡片、OG 内容卡片)等。我将所有网络处理移到一个类中。您调用包含所需请求的方法,传入相关参数和侦听器。进行网络调用,然后将响应传递给侦听器。
目前我有一个 Fragment 类,它使用我的自定义适配器填充回收视图。Fragment 类通过在端点上发出分页请求来与我的网络类交互。例如,当单击特定 viewHolder 卡上的类似图标时,我是否应该有一个与我的片段通信的适配器侦听器?然后我应该让片段制作并管理该网络调用吗?我必须在这里考虑的问题是,如果网络响应失败,我需要取消设置 UI 元素(例如类似图标的颜色)以通知用户他们的请求此时无法完成。取消设置这些元素是回收者视图中该位置的视图持有者的属性。将所有这些视图持有者信息传递回片段只是为了让片段成为与我的网络类交互的唯一类似乎是错误的。
例如,在我的视图持有者元素上设置一个 onClickListener,当点击时更新 UI 并进行调用,然后响应适配器。如果成功保持一切正常,如果失败,则取消设置 UI。这种模式对我来说很有意义,并将单个视图逻辑与片段分离。这样做好吗?很多谷歌搜索让我不相信。这是我的第一个商业应用程序,我想确保我遵循最好的模式。
我的记录片段看起来像这样
onCreate() {
networkListener = new NetworkResponseListener() {
//Process success response based on response code
onSuccess(JSONObject response, responseCode)
onError(Error e, responseCode) // Handle Errors
}
}
//After scroll listener indicates I need to fetch again
NetworkHelper.makeFeedFetch(networkListener, LastId, GET_FEED_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
所以本质上,我会在我的适配器类中执行相同类型的网络交互,以执行诸如单击 viewHolder 之类的图标等操作。可以接受吗?
我刚刚开始在 android 中处理数据绑定。理想情况下,我希望有一个包含一些通用 xml 元素的根 xml 文件,然后其内部内容可以是三个 xml 文件之一
<data>
<variable name="action" type="com.example.android.action"/>
</data>
<TextView>
<TextView>
<!--Only show one of these includes based on the binding data-->
<!-- if action.item -->
<include layout="item.xml"
bind:item="@{action.item}">
<!-- else if action.udpate -->
<include layout="update.xml"
bind:update="@{action.update}">
<!-- else if action.video -->
<include layout="video.xml"
bind:video="@{action.video}">
<TextView>
... etc
Run Code Online (Sandbox Code Playgroud)
所以基本上基于动作内部存在的子对象(项目、更新或视频)显示其布局并绑定视图但不显示其他包含。我应该只使用 android 的View:Visibility还是有我忽略的包含的东西?