提交 dfd2cb72 编写于 作者: J Jyoti Dubey

Adapter supplied with ViewModel

上级 2614d9b0
......@@ -142,7 +142,7 @@ public class ActivityModule {
@Provides
OpenSourceAdapter provideOpenSourceAdapter() {
return new OpenSourceAdapter(new ArrayList<OpenSourceResponse.Repo>());
return new OpenSourceAdapter();
}
@Provides
......
......@@ -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<OpenSourceResponse.Repo> mOpenSourceResponseList;
private List<OpenSourceItemViewModel> 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<OpenSourceResponse.Repo> repoList) {
public void addItems(List<OpenSourceItemViewModel> repoList) {
mOpenSourceResponseList.addAll(repoList);
notifyDataSetChanged();
}
public class OpenSourceViewHolder extends BaseViewHolder implements OpenSourceItemViewModel.OpenSourceItemViewModelListener {
public class OpenSourceViewHolder extends BaseViewHolder implements View.OnClickListener {
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 onItemClick(String projectUrl) {
if (projectUrl != null) {
public void onClick(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");
......
......@@ -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
......
......@@ -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);
......
......@@ -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()));
}
}
}
......@@ -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.
先完成此消息的编辑!
想要评论请 注册