Skip to content

Commit

Permalink
finish like
Browse files Browse the repository at this point in the history
  • Loading branch information
codeestX committed Aug 23, 2016
1 parent 036a63a commit c1a63de
Show file tree
Hide file tree
Showing 31 changed files with 334 additions and 21 deletions.
7 changes: 6 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.codeest.geeknews.ui.gank.fragment.TechFragment;
import com.codeest.geeknews.ui.gank.fragment.GankMainFragment;
import com.codeest.geeknews.ui.gank.fragment.GirlFragment;
import com.codeest.geeknews.ui.main.fragment.LikeFragment;
import com.codeest.geeknews.ui.zhihu.fragment.CommentFragment;
import com.codeest.geeknews.ui.zhihu.fragment.DailyFragment;
import com.codeest.geeknews.ui.zhihu.fragment.HotFragment;
Expand Down Expand Up @@ -44,4 +45,5 @@ public interface FragmentComponent {

void inject(GirlFragment girlFragment);

void inject(LikeFragment likeFragment);
}
Original file line number Diff line number Diff line change
@@ -1,29 +1,31 @@
package com.codeest.geeknews.model.bean;

import java.io.Serializable;

import io.realm.RealmObject;

/**
* Created by codeest on 16/8/23.
* 用于数据库的bean 种类包括 新闻、技术、福利
*/

public class RealmLikeBean extends RealmObject {
public class RealmLikeBean extends RealmObject implements Serializable{

public RealmLikeBean() { }

private int id;
private String id;

private String image;

private String title;

private int type;

public int getId() {
public String getId() {
return id;
}

public void setId(int id) {
public void setId(String id) {
this.id = id;
}

Expand Down
34 changes: 32 additions & 2 deletions app/src/main/java/com/codeest/geeknews/model/db/RealmHelper.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package com.codeest.geeknews.model.db;

import android.content.Context;
import android.util.Log;

import com.codeest.geeknews.model.bean.ReadStateBean;
import com.codeest.geeknews.util.LogUtil;
import com.codeest.geeknews.model.bean.RealmLikeBean;

import java.util.List;

import io.realm.Realm;
import io.realm.RealmConfiguration;
Expand All @@ -20,6 +21,7 @@ public class RealmHelper {

public RealmHelper(Context mContext) {
mRealm = Realm.getInstance(new RealmConfiguration.Builder(mContext)
.deleteRealmIfMigrationNeeded()
.name("myRealm.realm")
.build());
}
Expand All @@ -40,4 +42,32 @@ public boolean queryNewsId(int id) {
}
return false;
}

public void insertLikeBean(RealmLikeBean bean) {
mRealm.beginTransaction();
mRealm.copyToRealm(bean);
mRealm.commitTransaction();
}

public void deleteLikeBean(String id) {
RealmLikeBean data = mRealm.where(RealmLikeBean.class).equalTo("id",id).findFirst();
mRealm.beginTransaction();
data.deleteFromRealm();
mRealm.commitTransaction();
}

public boolean queryLikeId(String id) {
RealmResults<RealmLikeBean> results = mRealm.where(RealmLikeBean.class).findAll();
for(RealmLikeBean item : results) {
if(item.getId().equals(id)) {
return true;
}
}
return false;
}

public List<RealmLikeBean> getLikeList() {
RealmResults<RealmLikeBean> results = mRealm.where(RealmLikeBean.class).findAll();
return mRealm.copyFromRealm(results);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.codeest.geeknews.presenter;

import com.codeest.geeknews.base.RxPresenter;
import com.codeest.geeknews.model.db.RealmHelper;
import com.codeest.geeknews.presenter.contract.LikeContract;

import javax.inject.Inject;

/**
* Created by codeest on 2016/8/23.
*/
public class LikePresenter extends RxPresenter<LikeContract.View> implements LikeContract.Presenter{

private RealmHelper mRealmHelper;

@Inject
public LikePresenter(RealmHelper mRealmHelper) {
this.mRealmHelper = mRealmHelper;
}


@Override
public void getLikeData() {
if (mRealmHelper.getLikeList().size() == 0) {
mView.showError("还没有收藏哦~");
} else {
mView.showContent(mRealmHelper.getLikeList());
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.codeest.geeknews.presenter;

import com.codeest.geeknews.app.Constants;
import com.codeest.geeknews.base.RxPresenter;
import com.codeest.geeknews.model.bean.DetailExtraBean;
import com.codeest.geeknews.model.bean.RealmLikeBean;
import com.codeest.geeknews.model.bean.ZhihuDetailBean;
import com.codeest.geeknews.model.db.RealmHelper;
import com.codeest.geeknews.model.http.RetrofitHelper;
import com.codeest.geeknews.presenter.contract.ZhihuDetailContract;
import com.codeest.geeknews.util.RxUtil;
Expand All @@ -19,10 +22,13 @@
public class ZhihuDetailPresenter extends RxPresenter<ZhihuDetailContract.View> implements ZhihuDetailContract.Presenter{

private RetrofitHelper mRetrofitHelper;
private RealmHelper mRealmHelper;
private ZhihuDetailBean mData;

@Inject
public ZhihuDetailPresenter(RetrofitHelper mRetrofitHelper) {
public ZhihuDetailPresenter(RetrofitHelper mRetrofitHelper,RealmHelper mRealmHelper) {
this.mRetrofitHelper = mRetrofitHelper;
this.mRealmHelper = mRealmHelper;
}

@Override
Expand All @@ -32,6 +38,7 @@ public void getDetailData(int id) {
.subscribe(new Action1<ZhihuDetailBean>() {
@Override
public void call(ZhihuDetailBean zhihuDetailBean) {
mData = zhihuDetailBean;
mView.showContent(zhihuDetailBean);
}
}, new Action1<Throwable>() {
Expand Down Expand Up @@ -60,4 +67,32 @@ public void call(Throwable throwable) {
});
addSubscrebe(rxSubscription);
}

@Override
public void insertLikeData() {
if (mData != null) {
RealmLikeBean bean = new RealmLikeBean();
bean.setId(String.valueOf(mData.getId()));
bean.setImage(mData.getImage());
bean.setTitle(mData.getTitle());
bean.setType(Constants.TYPE_ZHIHU);
mRealmHelper.insertLikeBean(bean);
} else {
mView.showError("操作失败");
}
}

@Override
public void deleteLikeData() {
if (mData != null) {
mRealmHelper.deleteLikeBean(String.valueOf(mData.getId()));
} else {
mView.showError("操作失败");
}
}

@Override
public boolean queryLikeData(int id) {
return mRealmHelper.queryLikeId(String.valueOf(id));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.codeest.geeknews.presenter.contract;

import com.codeest.geeknews.base.BasePresenter;
import com.codeest.geeknews.base.BaseView;
import com.codeest.geeknews.model.bean.RealmLikeBean;

import java.util.List;

/**
* Created by codeest on 2016/8/23.
*/
public interface LikeContract {

interface View extends BaseView {

void showContent(List<RealmLikeBean> mList);
}

interface Presenter extends BasePresenter<View> {

void getLikeData();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,11 @@ interface Presenter extends BasePresenter<View> {
void getDetailData(int id);

void getExtraData(int id);

void insertLikeData();

void deleteLikeData();

boolean queryLikeData(int id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.codeest.geeknews.R;
import com.codeest.geeknews.app.App;
import com.codeest.geeknews.app.Constants;
import com.codeest.geeknews.base.SimpleActivity;
import com.codeest.geeknews.model.bean.RealmLikeBean;
import com.codeest.geeknews.model.db.RealmHelper;
import com.codeest.geeknews.util.ShareUtil;
import com.codeest.geeknews.util.SystemUtil;

Expand All @@ -30,9 +34,12 @@ public class GirlDetailActivity extends SimpleActivity {
ImageView ivGirlDetail;

PhotoViewAttacher mAttacher;
MenuItem menuItem;

String url;
String id;
Bitmap bitmap;
RealmHelper mRealmHelper;

@Override
protected int getLayout() {
Expand All @@ -42,8 +49,11 @@ protected int getLayout() {
@Override
protected void initEventAndData() {
setToolBar(toolBar,"");
mRealmHelper = App.getAppComponent().realmHelper();
Intent intent = getIntent();
url = intent.getExtras().getString("url");
id = intent.getExtras().getString("id");
mRealmHelper.queryLikeId(id);
if (url != null) {
Glide.with(mContext).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
@Override
Expand All @@ -59,13 +69,27 @@ public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glid
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.girl_menu,menu);
menuItem = menu.findItem(R.id.action_like);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
case R.id.action_like:
if(item.isChecked()) {
item.setChecked(false);
mRealmHelper.deleteLikeBean(this.id);
} else {
item.setChecked(true);
RealmLikeBean bean = new RealmLikeBean();
bean.setId(this.id);
bean.setImage(url);
bean.setType(Constants.TYPE_GIRL);
mRealmHelper.insertLikeBean(bean);
}
break;
case R.id.action_save:
SystemUtil.saveBitmapToFile(mContext,url,bitmap);
break;
Expand Down
Loading

0 comments on commit c1a63de

Please sign in to comment.