android项目实战 Android JetPack架构篇,一个实战项目带你学懂JetPack( 四 )
以下是WordViewModel的实现:
publicClassWordViewModelExtendsandRoidViewModel {
private word repository mRepository;
隐私数据<。列表<。Word & gt>。mAllWords
公共视图模型(应用程序应用程序){
super(应用);
mRepository = newWordRepository(应用程序);
【android项目实战 Android JetPack架构篇,一个实战项目带你学懂JetPack】mall words = mrepository . getall words();
}
LiveData<。列表<。Word & gt>。getAllWords(){ returnmalllwords;}
public void insert(Word Word){ mrepository . insert(Word);}
}
警告:不要将上下文传递给ViewModel实例。不要在视图模型中存储活动、片段或视图实例或它们的上下文。
添加XML布局 在value/stys . XML中添加列表项的样式:
& lt!-回收视图项目的默认字体太小。
边距是单词之间的简单分隔符。->;
& ltstylename="word_title " >
& ltitem name = " Android:layout _ width " & gt。match_parent<。/item>。
& ltitem name = " Android:layout _ height " >26dp<。/item>。
& ltitemname="android:textSize " >24sp<。/item>。
& ltitemname="android:textStyle " >bold<。/item>。
& ltitem name = " Android:layout _ MarginBottom " >6dp<。/item>。
& ltitemname="android:paddingLeft " >;8dp<。/item>。
& lt/style>。
添加布局/recycle view _ item . XML布局:
& lt?xml version="1.0 "编码="utf-8 "?>。
& ltlinelayoutxmlns:Android = " http://schemas . Android . com/apk/RES/Android "
android:orientation= "垂直" Android:layout _ width = " match _ parent "
Android:layout _>
& lt带边框的
安卓:id="@+id/textView "
style="@style/word_title "
Android:layout _ width = " match _ parent "
Android:layout _ height = " wrap _ content "
Android:background = " @ Android:color/holo _ orange _ light "/& gt;
& lt/LinearLayout >
在布局/内容_主. xml中,将文本视图替换为循环视图:
& ltAndroid . support . V7 . widget . recycle view
Android:id = " @+id/recycle view "
Android:layout _ width = " match _ parent "
Android:layout _ height = " match _ parent "
Android:background = " @ Android:color/dark _ gray "
工具:list item = " @ layout/recycle view _ item "/& gt。
浮动动作按钮(FAB)应该对应于可用的动作。在布局/活动. xml文件中,给浮动操作按钮一个+符号图标:
在Layout/Activitymain.xml文件中,选择File>New>VectorAsset。选择Material Icon。点击Android机器人图标:点field, 然后选 + (“add”) 资源。按以下方式更改布局文件代码。Android:src = "http://9.com/xinwen/shehui/ @ draw able/IC _ add _ black _ 24dp "
添加回收视图
您将在RecycleView中显示数据,这比将数据扔进TextView要好。请注意,适配器中的mWord变量缓存数据。在下一个任务中,添加自动更新数据的代码。还请注意,getItemCount()方法需要优雅地考虑数据尚未准备好且mWord仍然空的可能性。
添加一个WordListAdapter类,扩展了ReccyclerView。适配器..
这是代码:
publicClassWordListAdapterExtendsRecyclerView。适配器<。WordListAdapter。WordViewHolder>。{
classwordviewholderexTendsrecyclerview。ViewHolder{
privatefiltextview WordItemView;
privateWordViewHolder(查看项目视图){
super(ItemView);
WordItemView = ItemView . FindViewByID(r . id . TextView);
}
}
privatefilelayoutinflater mInflater;
privateList<。Word & gtmWords//单词的缓存副本
WordListAdapter(Context Context){ MinFlater = layoutInFlater . from(Context);}
@覆盖
publicWordViewholder OnCreateViewholder(视图组父级,intviewType){
推荐阅读
- 张忠德、林定坤入选2021年岐黄学者支持项目
- 淮阳区召开乡村振兴示范村创建暨2022年农业产业项目座谈会
- 闵行推出的这个新项目,已覆盖20多所幼儿园,家长反馈良好
- 和平精英:首款特效平底锅的实战效果!颜值在线,氪度却不美丽!
- 《一梦江湖》金陵奇妙会上演精彩娱乐项目,吃货们别忘了参加
- 永兴县:3.5亿元乡村振兴项目成功签约
- 王者荣耀:顶级难度五大英雄,500场实战仅入门,会玩的很少
- 第四届“奇璞奖”评选启动,九大赛道全面检阅健康产业价值创新项目(附报名通道)
- 王者荣耀新英雄实战几百场只算是入门,这三位英雄你会做到吗
- 经验交流 | 竹基镇:突出党建引领 选好用活沪滇帮扶项目