提交 4a075d78 编写于 作者: A amitshekhariitbhu

Add onItemClick binding in Blog and OpenSource

上级 17f7da73
......@@ -16,6 +16,8 @@
package com.mindorks.framework.mvvm.ui.feed.blogs;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
......@@ -24,6 +26,7 @@ import com.mindorks.framework.mvvm.data.model.api.BlogResponse;
import com.mindorks.framework.mvvm.databinding.ItemBlogEmptyViewBinding;
import com.mindorks.framework.mvvm.databinding.ItemBlogViewBinding;
import com.mindorks.framework.mvvm.ui.base.BaseViewHolder;
import com.mindorks.framework.mvvm.utils.AppLogger;
import java.util.List;
......@@ -55,7 +58,7 @@ public class BlogAdapter extends RecyclerView.Adapter<BaseViewHolder> {
case VIEW_TYPE_NORMAL:
ItemBlogViewBinding blogViewBinding = ItemBlogViewBinding.inflate(LayoutInflater.from(parent.getContext()),
parent, false);
return new ViewHolder(blogViewBinding);
return new BlogViewHolder(blogViewBinding);
case VIEW_TYPE_EMPTY:
default:
ItemBlogEmptyViewBinding emptyViewBinding = ItemBlogEmptyViewBinding.inflate(LayoutInflater.from(parent.getContext()),
......@@ -87,13 +90,13 @@ public class BlogAdapter extends RecyclerView.Adapter<BaseViewHolder> {
notifyDataSetChanged();
}
public class ViewHolder extends BaseViewHolder {
public class BlogViewHolder extends BaseViewHolder implements BlogItemViewModel.BlogItemViewModelListener {
private ItemBlogViewBinding mBinding;
private BlogItemViewModel mBlogItemViewModel;
public ViewHolder(ItemBlogViewBinding binding) {
public BlogViewHolder(ItemBlogViewBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
......@@ -103,7 +106,7 @@ public class BlogAdapter extends RecyclerView.Adapter<BaseViewHolder> {
final BlogResponse.Blog blog = mBlogResponseList.get(position);
mBlogItemViewModel = new BlogItemViewModel(blog);
mBlogItemViewModel = new BlogItemViewModel(blog, this);
mBinding.setViewModel(mBlogItemViewModel);
......@@ -114,6 +117,21 @@ public class BlogAdapter extends RecyclerView.Adapter<BaseViewHolder> {
mBinding.executePendingBindings();
}
@Override
public void onItemClick(String blogUrl) {
if (blogUrl != null) {
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(blogUrl));
itemView.getContext().startActivity(intent);
} catch (Exception e) {
AppLogger.d("url error");
}
}
}
}
public class EmptyViewHolder extends BaseViewHolder {
......
......@@ -33,8 +33,11 @@ public class BlogItemViewModel {
public ObservableField<String> date;
public ObservableField<String> content;
public BlogItemViewModel(BlogResponse.Blog blog) {
public BlogItemViewModelListener mListener;
public BlogItemViewModel(BlogResponse.Blog blog, BlogItemViewModelListener listener) {
this.mBlog = blog;
this.mListener = listener;
imageUrl = new ObservableField<>(mBlog.getCoverImgUrl());
title = new ObservableField<>(mBlog.getTitle());
author = new ObservableField<>(mBlog.getAuthor());
......@@ -42,4 +45,11 @@ public class BlogItemViewModel {
content = new ObservableField<>(mBlog.getDescription());
}
public void onItemClick() {
mListener.onItemClick(mBlog.getBlogUrl());
}
public interface BlogItemViewModelListener {
void onItemClick(String blogUrl);
}
}
......@@ -16,6 +16,8 @@
package com.mindorks.framework.mvvm.ui.feed.opensource;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
......@@ -24,6 +26,7 @@ import com.mindorks.framework.mvvm.data.model.api.OpenSourceResponse;
import com.mindorks.framework.mvvm.databinding.ItemOpenSourceEmptyViewBinding;
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.List;
......@@ -55,7 +58,7 @@ public class OpenSourceAdapter extends RecyclerView.Adapter<BaseViewHolder> {
case VIEW_TYPE_NORMAL:
ItemOpenSourceViewBinding openSourceViewBinding = ItemOpenSourceViewBinding
.inflate(LayoutInflater.from(parent.getContext()), parent, false);
return new ViewHolder(openSourceViewBinding);
return new OpenSourceViewHolder(openSourceViewBinding);
case VIEW_TYPE_EMPTY:
default:
ItemOpenSourceEmptyViewBinding emptyViewBinding = ItemOpenSourceEmptyViewBinding
......@@ -87,13 +90,13 @@ public class OpenSourceAdapter extends RecyclerView.Adapter<BaseViewHolder> {
notifyDataSetChanged();
}
public class ViewHolder extends BaseViewHolder {
public class OpenSourceViewHolder extends BaseViewHolder implements OpenSourceItemViewModel.OpenSourceItemViewModelListener {
private ItemOpenSourceViewBinding mBinding;
private OpenSourceItemViewModel mOpenSourceItemViewModel;
public ViewHolder(ItemOpenSourceViewBinding binding) {
public OpenSourceViewHolder(ItemOpenSourceViewBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
......@@ -102,7 +105,7 @@ public class OpenSourceAdapter extends RecyclerView.Adapter<BaseViewHolder> {
public void onBind(int position) {
final OpenSourceResponse.Repo repo = mOpenSourceResponseList.get(position);
mOpenSourceItemViewModel = new OpenSourceItemViewModel(repo);
mOpenSourceItemViewModel = new OpenSourceItemViewModel(repo, this);
mBinding.setViewModel(mOpenSourceItemViewModel);
......@@ -112,6 +115,21 @@ public class OpenSourceAdapter extends RecyclerView.Adapter<BaseViewHolder> {
// To force execution, use the executePendingBindings() method.
mBinding.executePendingBindings();
}
@Override
public void onItemClick(String projectUrl) {
if (projectUrl != null) {
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(projectUrl));
itemView.getContext().startActivity(intent);
} catch (Exception e) {
AppLogger.d("url error");
}
}
}
}
public class EmptyViewHolder extends BaseViewHolder {
......
......@@ -31,11 +31,22 @@ public class OpenSourceItemViewModel {
public ObservableField<String> title;
public ObservableField<String> content;
public OpenSourceItemViewModel(OpenSourceResponse.Repo repo) {
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 void onItemClick() {
mListener.onItemClick(mRepo.getProjectUrl());
}
public interface OpenSourceItemViewModelListener {
void onItemClick(String projectUrl);
}
}
......@@ -35,6 +35,7 @@
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">
......
......@@ -35,6 +35,7 @@
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.
先完成此消息的编辑!
想要评论请 注册