Commit acd39c95 by sikang

添加动æè联系人动态列表

parent c36f969c
...@@ -80,7 +80,7 @@ dependencies { ...@@ -80,7 +80,7 @@ dependencies {
//SmartRefresh //SmartRefresh
api 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14' api 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
// api 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14'//没有使用特殊Header,可以不加这行 api 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14'//没有使用特殊Header,可以不加这行
//Gson //Gson
api 'com.google.code.gson:gson:2.8.2' api 'com.google.code.gson:gson:2.8.2'
......
package com.common.bean;
import java.io.Serializable;
/**
* Created by SiKang on 2019/3/21.
*/
public class ContactBean implements Serializable {
private String id;//:0,
private String mobile;//:string,
private String name;//:string,
private String relation;//:PARENT
public ContactBean(String mobile, String name, String relation) {
this.mobile = mobile;
this.name = name;
this.relation = relation;
}
public ContactBean() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRelation() {
return relation;
}
public void setRelation(String relation) {
this.relation = relation;
}
}
...@@ -7,6 +7,7 @@ import android.text.TextUtils; ...@@ -7,6 +7,7 @@ import android.text.TextUtils;
import android.view.View; import android.view.View;
import com.meituan.android.walle.WalleChannelReader; import com.meituan.android.walle.WalleChannelReader;
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator; import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator;
import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator; import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator;
...@@ -210,7 +211,7 @@ public class LibConfig { ...@@ -210,7 +211,7 @@ public class LibConfig {
@Override @Override
public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
layout.setPrimaryColorsId(R.color.qmui_config_color_gray_9, R.color.qmui_config_color_50_pure_black);//全局设置主题颜色 layout.setPrimaryColorsId(R.color.qmui_config_color_gray_9, R.color.qmui_config_color_50_pure_black);//全局设置主题颜色
return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header return new MaterialHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
} }
}); });
//设置全局的Footer构建器 //设置全局的Footer构建器
......
...@@ -7,6 +7,7 @@ import android.view.View; ...@@ -7,6 +7,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
...@@ -17,6 +18,7 @@ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<Recycl ...@@ -17,6 +18,7 @@ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<Recycl
private final Context context; private final Context context;
private OnItemClickListener<T> mClickListener; private OnItemClickListener<T> mClickListener;
private OnItemLongClickListener<T> mLongClickListener; private OnItemLongClickListener<T> mLongClickListener;
private List<Integer> childClickSet;
public BaseRecyclerAdapter(Context ctx, List<T> list) { public BaseRecyclerAdapter(Context ctx, List<T> list) {
mData = (list != null) ? list : new ArrayList<T>(); mData = (list != null) ? list : new ArrayList<T>();
...@@ -37,20 +39,13 @@ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<Recycl ...@@ -37,20 +39,13 @@ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<Recycl
final RecyclerViewHolder holder = new RecyclerViewHolder(view); final RecyclerViewHolder holder = new RecyclerViewHolder(view);
initViewHolder(holder); initViewHolder(holder);
if (mClickListener != null) { if (mClickListener != null) {
holder.itemView.setOnClickListener(new View.OnClickListener() { holder.itemView.setOnClickListener(v ->
@Override mClickListener.onItemClick(holder.itemView, holder.getLayoutPosition(), mData.get(holder.getLayoutPosition())));
public void onClick(View v) {
mClickListener.onItemClick(holder.itemView, holder.getLayoutPosition(), mData.get(holder.getLayoutPosition()));
}
});
} }
if (mLongClickListener != null) { if (mLongClickListener != null) {
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { holder.itemView.setOnLongClickListener(v -> {
@Override mLongClickListener.onItemLongClick(holder.itemView, holder.getLayoutPosition(), mData.get(holder.getLayoutPosition()));
public boolean onLongClick(View v) { return true;
mLongClickListener.onItemLongClick(holder.itemView, holder.getLayoutPosition(), mData.get(holder.getLayoutPosition()));
return true;
}
}); });
} }
return holder; return holder;
...@@ -59,6 +54,14 @@ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<Recycl ...@@ -59,6 +54,14 @@ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<Recycl
@Override @Override
public final void onBindViewHolder(RecyclerViewHolder holder, int position) { public final void onBindViewHolder(RecyclerViewHolder holder, int position) {
bindData(holder, position, mData.get(position)); bindData(holder, position, mData.get(position));
if (mClickListener != null && childClickSet.size() > 0) {
for (int id : childClickSet) {
View child = holder.getView(id);
if (child != null) {
child.setOnClickListener(v -> mClickListener.onItemClick(v, position, mData.get(position)));
}
}
}
} }
...@@ -85,8 +88,11 @@ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<Recycl ...@@ -85,8 +88,11 @@ public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<Recycl
} }
public void setOnItemClickListener(OnItemClickListener<T> listener) { public void setOnItemClickListener(OnItemClickListener<T> listener, Integer... viewIds) {
mClickListener = listener; mClickListener = listener;
childClickSet = new ArrayList<>();
childClickSet.addAll(Arrays.asList(viewIds));
} }
public void setOnItemLongClickListener(OnItemLongClickListener<T> listener) { public void setOnItemLongClickListener(OnItemLongClickListener<T> listener) {
......
...@@ -8,10 +8,12 @@ import java.util.List; ...@@ -8,10 +8,12 @@ import java.util.List;
import io.reactivex.Observable; import io.reactivex.Observable;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.Field; import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded; import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.Header; import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.PUT; import retrofit2.http.PUT;
import retrofit2.http.Path; import retrofit2.http.Path;
...@@ -21,6 +23,7 @@ import retrofit2.http.Url; ...@@ -21,6 +23,7 @@ import retrofit2.http.Url;
import com.common.bean.ActivityInfoBean; import com.common.bean.ActivityInfoBean;
import com.common.bean.BannerMessageDto; import com.common.bean.BannerMessageDto;
import com.common.bean.BasicAck; import com.common.bean.BasicAck;
import com.common.bean.ContactBean;
import com.common.bean.ContactInfoBean; import com.common.bean.ContactInfoBean;
import com.common.bean.CouponBean; import com.common.bean.CouponBean;
import com.common.bean.DisplayBean; import com.common.bean.DisplayBean;
...@@ -88,13 +91,12 @@ public interface UserApi { ...@@ -88,13 +91,12 @@ public interface UserApi {
/** /**
* 上传firebase 推送图片 * 上传firebase 推送图片
* */ */
@FormUrlEncoded @FormUrlEncoded
@PUT("record/firebase_token") @PUT("record/firebase_token")
Observable<ResponseBody> uploadFirebaseToken(@Field("firebase_token") String token); Observable<ResponseBody> uploadFirebaseToken(@Field("firebase_token") String token);
/** /**
* 获取认证信息 * 获取认证信息
*/ */
...@@ -157,6 +159,14 @@ public interface UserApi { ...@@ -157,6 +159,14 @@ public interface UserApi {
@Header("X-AUTH-TOKEN") String token); @Header("X-AUTH-TOKEN") String token);
@GET("/record/emergency/contact/list")
Observable<List<ContactBean>> getContactList();
@Headers("Content-Type: application/json")
@PUT("/record/emergency/contact")
Observable<BasicAck> submitContactList(@Body List<ContactBean> contactList);
/** /**
* 提交工作认证信息 * 提交工作认证信息
*/ */
...@@ -305,7 +315,6 @@ public interface UserApi { ...@@ -305,7 +315,6 @@ public interface UserApi {
Observable<UserBankInfo> getBankCardInfo(@Header("X-AUTH-TOKEN") String token); Observable<UserBankInfo> getBankCardInfo(@Header("X-AUTH-TOKEN") String token);
@GET("chat/account") @GET("chat/account")
Observable<YWUser> getChatUserInfo(@Header("X-AUTH-TOKEN") String token); Observable<YWUser> getChatUserInfo(@Header("X-AUTH-TOKEN") String token);
......
...@@ -27,6 +27,7 @@ import tech.starwin.mvp.api.UploadApi; ...@@ -27,6 +27,7 @@ import tech.starwin.mvp.api.UploadApi;
import tech.starwin.mvp.api.UserApi; import tech.starwin.mvp.api.UserApi;
import com.common.bean.BankBean; import com.common.bean.BankBean;
import com.common.bean.ContactBean;
import com.common.bean.ContactInfoBean; import com.common.bean.ContactInfoBean;
import com.common.bean.DisplayBean; import com.common.bean.DisplayBean;
import com.common.bean.EmploymentServerBean; import com.common.bean.EmploymentServerBean;
...@@ -560,6 +561,22 @@ public class UserPresenter extends BasePresenter<UserApi> { ...@@ -560,6 +561,22 @@ public class UserPresenter extends BasePresenter<UserApi> {
handleRequest(action, apiService.getContactInfo(LoginManager.get().getToken())); handleRequest(action, apiService.getContactInfo(LoginManager.get().getToken()));
} }
/**
* 获取联系人信息
*/
public void getContactList(String action) {
handleRequest(action, apiService.getContactList());
}
/**
* 获取联系人信息
*/
public void submitContactList(String action, List<ContactBean> contactBeans) {
handleRequest(action, apiService.submitContactList(contactBeans));
}
/** /**
* 公告 * 公告
*/ */
......
...@@ -189,7 +189,7 @@ public class InfoTranslator { ...@@ -189,7 +189,7 @@ public class InfoTranslator {
/** /**
* 还款方式 * 亲属关系
*/ */
public static StringAdapter getFamilyContactAdapter(Context context) { public static StringAdapter getFamilyContactAdapter(Context context) {
StringAdapter adapter = new StringAdapter(); StringAdapter adapter = new StringAdapter();
...@@ -201,7 +201,7 @@ public class InfoTranslator { ...@@ -201,7 +201,7 @@ public class InfoTranslator {
/** /**
* 还款方式 * 朋友关系
*/ */
public static StringAdapter getFriendContactAdapter(Context context) { public static StringAdapter getFriendContactAdapter(Context context) {
StringAdapter adapter = new StringAdapter(); StringAdapter adapter = new StringAdapter();
...@@ -211,6 +211,20 @@ public class InfoTranslator { ...@@ -211,6 +211,20 @@ public class InfoTranslator {
return adapter; return adapter;
} }
/**
* 所有关系
*/
public static StringAdapter getContactRelationAdapter(Context context) {
StringAdapter adapter = new StringAdapter();
adapter.addItem(newItem(context, "PARENT", R.string.contact_father));
adapter.addItem(newItem(context, "MOTHER", R.string.contact_mother));
adapter.addItem(newItem(context, "SPOUSE", R.string.contact_spouse));
adapter.addItem(newItem(context, "FRIEND", R.string.contact_friend));
adapter.addItem(newItem(context, "CLASSMATE", R.string.contact_classmates));
adapter.addItem(newItem(context, "COLLEAGUE", R.string.contact_colleagues));
return adapter;
}
private static StringAdapter.Item newItem(Context context, String value, int info) { private static StringAdapter.Item newItem(Context context, String value, int info) {
......
...@@ -27,6 +27,23 @@ import tech.starwin.R; ...@@ -27,6 +27,23 @@ import tech.starwin.R;
public class StringFormat { public class StringFormat {
/** /**
* 是否有空值
*/
public static boolean hasEmpty(String value, String... values) {
if (TextUtils.isEmpty(value)) {
return true;
} else {
for (String str : values) {
if (TextUtils.isEmpty(str)) {
return true;
}
}
}
return false;
}
/**
* 格式化金额 * 格式化金额
*/ */
public static String moneyFormat(@Nullable Context context, double money) { public static String moneyFormat(@Nullable Context context, double money) {
......
...@@ -94,6 +94,8 @@ ...@@ -94,6 +94,8 @@
<string name="text_progress_rating"> 0% </string> <string name="text_progress_rating"> 0% </string>
<string name="button_certification_submit">Submit</string> <string name="button_certification_submit">Submit</string>
<string name="text_next_step">Next Step</string>
<string name="text_remain_days">05</string> <string name="text_remain_days">05</string>
<string name="text_unit_days">Day</string> <string name="text_unit_days">Day</string>
......
...@@ -463,6 +463,8 @@ ...@@ -463,6 +463,8 @@
<string name="repayment_transation_code_text">交易号</string> <string name="repayment_transation_code_text">交易号</string>
<string name="text_next_step">下一步</string>
<string name="pay_in_alfamart"> <string name="pay_in_alfamart">
\n \n
1.去Alfamart旗下(Alfamart,Alfamidi,Lawson,AND + AND)。\n 1.去Alfamart旗下(Alfamart,Alfamidi,Lawson,AND + AND)。\n
......
...@@ -123,6 +123,8 @@ ...@@ -123,6 +123,8 @@
<string name="text_remain_text">Sisa: </string> <string name="text_remain_text">Sisa: </string>
<string name="text_been_payment_account">Rp42.000</string> <string name="text_been_payment_account">Rp42.000</string>
<string name="text_next_step">Langkah berikutnya</string>
<string name="text_title_system_message">Pesan Sistem</string> <string name="text_title_system_message">Pesan Sistem</string>
<string name="text_customer_service_hotline">Hubungi Kami</string> <string name="text_customer_service_hotline">Hubungi Kami</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment