Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
android-mvvm-architecture
提交
dfd2cb72
A
android-mvvm-architecture
项目概览
门心叼龙
/
android-mvvm-architecture
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
android-mvvm-architecture
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
dfd2cb72
编写于
7月 29, 2017
作者:
J
Jyoti Dubey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Adapter supplied with ViewModel
上级
2614d9b0
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
40 addition
and
27 deletion
+40
-27
app/src/main/java/com/mindorks/framework/mvvm/di/module/ActivityModule.java
...com/mindorks/framework/mvvm/di/module/ActivityModule.java
+1
-1
app/src/main/java/com/mindorks/framework/mvvm/ui/feed/opensource/OpenSourceAdapter.java
.../framework/mvvm/ui/feed/opensource/OpenSourceAdapter.java
+12
-13
app/src/main/java/com/mindorks/framework/mvvm/ui/feed/opensource/OpenSourceFragment.java
...framework/mvvm/ui/feed/opensource/OpenSourceFragment.java
+2
-1
app/src/main/java/com/mindorks/framework/mvvm/ui/feed/opensource/OpenSourceItemViewModel.java
...work/mvvm/ui/feed/opensource/OpenSourceItemViewModel.java
+8
-11
app/src/main/java/com/mindorks/framework/mvvm/ui/feed/opensource/OpenSourceViewModel.java
...ramework/mvvm/ui/feed/opensource/OpenSourceViewModel.java
+17
-0
app/src/main/res/layout/item_open_source_view.xml
app/src/main/res/layout/item_open_source_view.xml
+0
-1
未找到文件。
app/src/main/java/com/mindorks/framework/mvvm/di/module/ActivityModule.java
浏览文件 @
dfd2cb72
...
...
@@ -142,7 +142,7 @@ public class ActivityModule {
@Provides
OpenSourceAdapter
provideOpenSourceAdapter
()
{
return
new
OpenSourceAdapter
(
new
ArrayList
<
OpenSourceResponse
.
Repo
>()
);
return
new
OpenSourceAdapter
();
}
@Provides
...
...
app/src/main/java/com/mindorks/framework/mvvm/ui/feed/opensource/OpenSourceAdapter.java
浏览文件 @
dfd2cb72
...
...
@@ -20,6 +20,7 @@ import android.content.Intent;
import
android.net.Uri
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.mindorks.framework.mvvm.data.model.api.OpenSourceResponse
;
...
...
@@ -28,6 +29,7 @@ import com.mindorks.framework.mvvm.databinding.ItemOpenSourceViewBinding;
import
com.mindorks.framework.mvvm.ui.base.BaseViewHolder
;
import
com.mindorks.framework.mvvm.utils.AppLogger
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
...
...
@@ -39,11 +41,11 @@ public class OpenSourceAdapter extends RecyclerView.Adapter<BaseViewHolder> {
public
static
final
int
VIEW_TYPE_EMPTY
=
0
;
public
static
final
int
VIEW_TYPE_NORMAL
=
1
;
private
List
<
OpenSource
Response
.
Repo
>
mOpenSourceResponseList
;
private
List
<
OpenSource
ItemViewModel
>
mOpenSourceResponseList
;
private
OpenSourceAdapterListener
mListener
;
public
OpenSourceAdapter
(
List
<
OpenSourceResponse
.
Repo
>
openSourceResponseList
)
{
this
.
mOpenSourceResponseList
=
openSourceResponseList
;
public
OpenSourceAdapter
()
{
this
.
mOpenSourceResponseList
=
new
ArrayList
<>()
;
}
public
void
setListener
(
OpenSourceAdapterListener
listener
)
{
...
...
@@ -89,16 +91,15 @@ public class OpenSourceAdapter extends RecyclerView.Adapter<BaseViewHolder> {
}
}
public
void
addItems
(
List
<
OpenSource
Response
.
Repo
>
repoList
)
{
public
void
addItems
(
List
<
OpenSource
ItemViewModel
>
repoList
)
{
mOpenSourceResponseList
.
addAll
(
repoList
);
notifyDataSetChanged
();
}
public
class
OpenSourceViewHolder
extends
BaseViewHolder
implements
OpenSourceItemViewModel
.
OpenSourceItemViewModel
Listener
{
public
class
OpenSourceViewHolder
extends
BaseViewHolder
implements
View
.
OnClick
Listener
{
private
ItemOpenSourceViewBinding
mBinding
;
private
OpenSourceItemViewModel
mOpenSourceItemViewModel
;
public
OpenSourceViewHolder
(
ItemOpenSourceViewBinding
binding
)
{
super
(
binding
.
getRoot
());
...
...
@@ -107,10 +108,7 @@ public class OpenSourceAdapter extends RecyclerView.Adapter<BaseViewHolder> {
@Override
public
void
onBind
(
int
position
)
{
final
OpenSourceResponse
.
Repo
repo
=
mOpenSourceResponseList
.
get
(
position
);
mOpenSourceItemViewModel
=
new
OpenSourceItemViewModel
(
repo
,
this
);
final
OpenSourceItemViewModel
mOpenSourceItemViewModel
=
mOpenSourceResponseList
.
get
(
position
);
mBinding
.
setViewModel
(
mOpenSourceItemViewModel
);
// Immediate Binding
...
...
@@ -120,14 +118,15 @@ public class OpenSourceAdapter extends RecyclerView.Adapter<BaseViewHolder> {
mBinding
.
executePendingBindings
();
}
@Override
public
void
on
ItemClick
(
String
projectUrl
)
{
if
(
projectUrl
!=
null
)
{
public
void
on
Click
(
View
view
)
{
if
(
mOpenSourceResponseList
.
get
(
0
).
projectUrl
.
get
()
!=
null
)
{
try
{
Intent
intent
=
new
Intent
();
intent
.
setAction
(
Intent
.
ACTION_VIEW
);
intent
.
addCategory
(
Intent
.
CATEGORY_BROWSABLE
);
intent
.
setData
(
Uri
.
parse
(
projectUrl
));
intent
.
setData
(
Uri
.
parse
(
mOpenSourceResponseList
.
get
(
0
).
projectUrl
.
get
()
));
itemView
.
getContext
().
startActivity
(
intent
);
}
catch
(
Exception
e
)
{
AppLogger
.
d
(
"url error"
);
...
...
app/src/main/java/com/mindorks/framework/mvvm/ui/feed/opensource/OpenSourceFragment.java
浏览文件 @
dfd2cb72
...
...
@@ -103,7 +103,8 @@ public class OpenSourceFragment extends BaseFragment<FragmentOpenSourceBinding,
@Override
public
void
updateRepo
(
List
<
OpenSourceResponse
.
Repo
>
repoList
)
{
mOpenSourceAdapter
.
addItems
(
repoList
);
mOpenSourceViewModel
.
populateViewModel
(
repoList
);
mOpenSourceAdapter
.
addItems
(
mOpenSourceViewModel
.
openSourceItemViewModels
);
}
@Override
...
...
app/src/main/java/com/mindorks/framework/mvvm/ui/feed/opensource/OpenSourceItemViewModel.java
浏览文件 @
dfd2cb72
...
...
@@ -20,30 +20,27 @@ import android.databinding.ObservableField;
import
com.mindorks.framework.mvvm.data.model.api.OpenSourceResponse
;
import
io.reactivex.Single
;
/**
* Created by amitshekhar on 10/07/17.
*/
public
class
OpenSourceItemViewModel
{
private
OpenSourceResponse
.
Repo
mRepo
;
public
ObservableField
<
String
>
imageUrl
;
public
ObservableField
<
String
>
title
;
public
ObservableField
<
String
>
content
;
public
ObservableField
<
String
>
projectUrl
;
public
OpenSourceItemViewModelListener
mListener
;
public
OpenSourceItemViewModel
(
OpenSourceResponse
.
Repo
repo
,
OpenSourceItemViewModelListener
listener
)
{
this
.
mRepo
=
repo
;
this
.
mListener
=
listener
;
imageUrl
=
new
ObservableField
<>(
repo
.
getCoverImgUrl
());
title
=
new
ObservableField
<>(
mRepo
.
getTitle
());
content
=
new
ObservableField
<>(
mRepo
.
getDescription
());
public
OpenSourceItemViewModel
(
String
imageUrl
,
String
title
,
String
content
,
String
projectUrl
)
{
this
.
imageUrl
.
set
(
imageUrl
);
this
.
title
.
set
(
title
);
this
.
content
.
set
(
content
);
this
.
projectUrl
.
set
(
projectUrl
);
}
public
void
onItemClick
()
{
mListener
.
onItemClick
(
mRepo
.
getProjectUrl
());
}
public
interface
OpenSourceItemViewModelListener
{
void
onItemClick
(
String
projectUrl
);
...
...
app/src/main/java/com/mindorks/framework/mvvm/ui/feed/opensource/OpenSourceViewModel.java
浏览文件 @
dfd2cb72
...
...
@@ -16,11 +16,18 @@
package
com.mindorks.framework.mvvm.ui.feed.opensource
;
import
android.databinding.ObservableArrayList
;
import
com.mindorks.framework.mvvm.data.DataManager
;
import
com.mindorks.framework.mvvm.data.model.api.OpenSourceResponse
;
import
com.mindorks.framework.mvvm.ui.base.BaseViewModel
;
import
com.mindorks.framework.mvvm.utils.rx.SchedulerProvider
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.Callable
;
import
io.reactivex.Single
;
import
io.reactivex.annotations.NonNull
;
import
io.reactivex.disposables.CompositeDisposable
;
import
io.reactivex.functions.Consumer
;
...
...
@@ -30,6 +37,8 @@ import io.reactivex.functions.Consumer;
*/
public
class
OpenSourceViewModel
extends
BaseViewModel
<
OpenSourceNavigator
>
{
public
ObservableArrayList
<
OpenSourceItemViewModel
>
openSourceItemViewModels
=
new
ObservableArrayList
<>();
public
OpenSourceViewModel
(
DataManager
dataManager
,
SchedulerProvider
schedulerProvider
,
...
...
@@ -61,4 +70,12 @@ public class OpenSourceViewModel extends BaseViewModel<OpenSourceNavigator> {
}
}));
}
public
void
populateViewModel
(
List
<
OpenSourceResponse
.
Repo
>
repoList
){
for
(
int
i
=
0
;
i
<
repoList
.
size
();
i
++){
openSourceItemViewModels
.
add
(
new
OpenSourceItemViewModel
(
repoList
.
get
(
i
).
getCoverImgUrl
(),
repoList
.
get
(
i
).
getTitle
(),
repoList
.
get
(
i
).
getDescription
(),
repoList
.
get
(
i
).
getProjectUrl
()));
}
}
}
app/src/main/res/layout/item_open_source_view.xml
浏览文件 @
dfd2cb72
...
...
@@ -35,7 +35,6 @@
android:layout_height=
"wrap_content"
android:layout_margin=
"8dp"
android:background=
"@color/white"
android:onClick=
"@{() -> viewModel.onItemClick()}"
android:orientation=
"vertical"
app:cardCornerRadius=
"7dp"
app:cardElevation=
"4dp"
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录