From 8226f232c39359b36aff8a9b0453c2fb48ee4372 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 18 十二月 2023 11:48:53 +0800 Subject: [PATCH] 用户列表分页加载 --- app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java | 46 ++++ app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java | 2 app/src/main/java/com/dayu/recharge/dao/BaseDaoSingleton.java | 2 app/src/main/java/com/dayu/recharge/adapter/BaseRecyclerAdapter.java | 64 +++++++ app/src/main/java/com/dayu/recharge/dao/UserCardDao.java | 5 app/src/main/res/layout/activity_newcard_list.xml | 37 +++ app/src/main/res/mipmap-xhdpi/ic_no_more.png | 0 app/src/main/res/values/colors.xml | 3 app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java | 90 ++++++++- app/src/main/res/layout/item_new_card.xml | 93 +++++---- app/src/main/res/layout/activity_recharge_list.xml | 2 app/src/main/java/com/dayu/recharge/adapter/NewCardAdapter.java | 98 ++++++---- app/build.gradle | 19 ++ app/src/main/res/layout/item_no_more.xml | 29 +++ 14 files changed, 389 insertions(+), 101 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1b6a414..590068d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,14 @@ apply plugin: 'com.android.application' android { + signingConfigs { + debug { + storeFile file('dycz.jks') + storePassword 'dycz@2023' + keyAlias 'dayu' + keyPassword 'dycz@2023' + } + } namespace 'com.dayu.recharge' compileSdk 33 @@ -16,6 +24,7 @@ ndk{ abiFilters 'armeabi-v7a' } + signingConfig signingConfigs.debug } @@ -28,6 +37,9 @@ compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 + } + dataBinding { + enabled = true; } viewBinding { enabled = true; @@ -70,4 +82,11 @@ } //婊氬姩閫夋嫨妗� implementation 'com.contrarywind:Android-PickerView:4.1.9' + + //鍒楄〃 + implementation 'io.github.scwang90:refresh-layout-kernel:2.0.5' + implementation 'io.github.scwang90:refresh-header-classics:2.0.5' + implementation 'androidx.recyclerview:recyclerview:1.2.0'//缁忓吀鍒锋柊澶� + + implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java index 0d5db30..51d32af 100644 --- a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java @@ -36,6 +36,8 @@ import org.json.JSONObject; import java.util.Arrays; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Copyright (C), 2023, @@ -93,7 +95,7 @@ if (userName.length() <= 1 || !validateName(userName)) { TipUtil.show(NewCardActivity.this, "璇疯緭鍏ユ纭鍚�"); return; - } else if (phone.length() < 11) { + } else if (phone.length() < 11 || !isValidPhoneNumber(phone)) { TipUtil.show(NewCardActivity.this, "璇疯緭鍏ユ纭墜鏈哄彿"); return; } else if (!Utils.check(userID)) { @@ -115,6 +117,45 @@ } }); } + + private boolean isValidPhoneNumber(String phoneNumber) { + // 瀹氫箟鎵嬫満鍙风殑姝e垯琛ㄨ揪寮忥紝纭繚鏁板瓧閮ㄥ垎娌℃湁杩炵画6浣嶇浉鍚岀殑鏁板瓧 + String phoneRegex = "^1[0-9]{10}$"; + + // 鍒涘缓 Pattern 瀵硅薄 + Pattern pattern = Pattern.compile(phoneRegex); + + // 鍒涘缓 matcher 瀵硅薄 + Matcher matcher = pattern.matcher(phoneNumber); + + // 鍒ゆ柇鎵嬫満鍙锋槸鍚﹀尮閰嶆鍒欒〃杈惧紡 + return matcher.matches() && !hasSixConsecutiveSameDigits(phoneNumber); + } + + /** + * 鍒ゆ柇鏄惁鏈�6涓浉鍚岀殑杩炵画鏁板瓧 + * + * @param input + * @return + */ + public static boolean hasSixConsecutiveSameDigits(String input) { + char[] digits = input.toCharArray(); + + for (int i = 0; i <= digits.length - 6; i++) { + boolean consecutiveSame = true; + for (int j = 1; j < 6; j++) { + if (digits[i + j] != digits[i + j - 1]) { + consecutiveSame = false; + break; + } + } + if (consecutiveSame) { + return true; + } + } + return false; + } + private void rxPermission() { PermissionX.init(NewCardActivity.this).permissions(Manifest.permission.CAMERA) @@ -320,10 +361,11 @@ return (c >= 0x4e00 && c <= 0x9fa5); } } + @Override protected void onDestroy() { super.onDestroy(); - newCardActivity=null; + newCardActivity = null; } } diff --git a/app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java b/app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java index e959fbb..46bb0e6 100644 --- a/app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/NewCardListActivity.java @@ -3,8 +3,13 @@ import static com.dayu.recharge.view.TitleBar.ClickType_RIGHT_TEXT; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.view.LayoutInflater; import android.view.View; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import com.dayu.recharge.adapter.NewCardAdapter; import com.dayu.recharge.databinding.ActivityNewcardListBinding; @@ -12,8 +17,19 @@ import com.dayu.recharge.utils.TipUtil; import com.dayu.recharge.view.datepicker.CustomDatePicker; import com.dayu.recharge.view.datepicker.DateFormatUtils; +import com.scwang.smart.refresh.footer.ClassicsFooter; +import com.scwang.smart.refresh.header.ClassicsHeader; +import com.scwang.smart.refresh.layout.api.RefreshLayout; +import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener; +import com.scwang.smart.refresh.layout.listener.OnRefreshListener; +import java.util.ArrayList; import java.util.List; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.Scheduler; +import io.reactivex.rxjava3.schedulers.Schedulers; /** * Copyright (C), 2023, @@ -26,12 +42,19 @@ ActivityNewcardListBinding newcardListBinding; - List<UserCardBean> userCardBeanList; + List<UserCardBean> userCardBeanList = new ArrayList<>(); NewCardAdapter adapter; private CustomDatePicker beginDatePicker; private CustomDatePicker endDatePicker; long beginTime; long endTime; + + int page = 0; + + //姣忛〉鏁版嵁鏉℃暟 + int limit = 30; + RefreshLayout myRefreshLayout; + Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { @@ -39,21 +62,68 @@ newcardListBinding = ActivityNewcardListBinding.inflate(LayoutInflater.from(this)); setContentView(newcardListBinding.getRoot()); setRightButton(); - setData(); initDatePicker(); + initList(); + getList(); } - private void setData() { - try { - userCardBeanList = baseDao.userCardDao().findAll(); - } catch (Exception e) { - e.printStackTrace(); - } + private void initList() { + myRefreshLayout = (RefreshLayout) newcardListBinding.refreshLayout; + myRefreshLayout.setEnableRefresh(false); + myRefreshLayout.setRefreshFooter(new ClassicsFooter(this)); + myRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshlayout) { + page = page + 1; + getList(); + } + }); adapter = new NewCardAdapter(this, userCardBeanList); - newcardListBinding.newCardListView.setAdapter(adapter); - + LinearLayoutManager layoutManager = new LinearLayoutManager(this); + newcardListBinding.recyclerView.setLayoutManager(layoutManager); + newcardListBinding.recyclerView.setAdapter(adapter); + int totale = baseDao.userCardDao().getUserTotale(); + newcardListBinding.userTotal.setText(totale + ""); } + + private void getList() { + // 鍒涘缓涓�涓� Observable + Observable<List<UserCardBean>> observable = Observable.create(emitter -> { + // 鍦ㄨ繖閲屾墽琛屽紓姝ユ搷浣� + List<UserCardBean> beanList; + if (beginTime == 0 && endTime == 0) { + beanList = asynchBaseDao.userCardDao().findAll(page * limit, limit); + } else { + beanList = asynchBaseDao.userCardDao().findByTime(beginTime, endTime); + } + // 灏嗙粨鏋滃彂閫佺粰瑙傚療鑰� + emitter.onNext(beanList); + emitter.onComplete(); + }); + // 璁㈤槄瑙傚療鑰� + observable.subscribeOn(Schedulers.io()) // 鎸囧畾鍦� IO 绾跨▼鎵ц + .observeOn(AndroidSchedulers.mainThread()) // 鎸囧畾鍦ㄥ崟涓�绾跨▼瑙傚療缁撴灉 + .subscribe( + result -> { + // 鍦ㄨ繖閲屽鐞嗙粨鏋滐紝杩欓噷鏄湪涓荤嚎绋嬩腑 +// System.out.println("Result: " + result); + if (result.size() < limit) { + myRefreshLayout.finishLoadMoreWithNoMoreData(); + } + if (result != null && result.size() > 0) { + userCardBeanList.addAll(result); + } + adapter.notifyDataSetChanged(); + }, + error -> { + // 澶勭悊閿欒 + System.err.println("Error: " + error.getMessage()); + } + ); + } + + private void setRightButton() { titleBar.setOnItemclickListner(ClickType_RIGHT_TEXT, new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java b/app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java index 71f066c..f6c182b 100644 --- a/app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/ReplacementActivity.java @@ -57,7 +57,7 @@ e.printStackTrace(); } adapter = new NewCardAdapter(this, userCardBeanList); - binding.newCardListView.setAdapter(adapter); +// binding.newCardListView.setAdapter(adapter); } EdtDialog edtDialog; diff --git a/app/src/main/java/com/dayu/recharge/adapter/BaseRecyclerAdapter.java b/app/src/main/java/com/dayu/recharge/adapter/BaseRecyclerAdapter.java new file mode 100644 index 0000000..2560c5f --- /dev/null +++ b/app/src/main/java/com/dayu/recharge/adapter/BaseRecyclerAdapter.java @@ -0,0 +1,64 @@ +package com.dayu.recharge.adapter; + +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.dayu.recharge.databinding.ItemNoMoreBinding; + +/** + * Copyright (C), 2023, + * Author: zuo + * Date: 2023-04-20 8:48 + * Description: + */ +public class BaseRecyclerAdapter<T extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<T> { + + /** + * viewType--鍒嗗埆涓篿tem浠ュ強绌簐iew + */ + public static final int VIEW_TYPE_ITEM = 1; + public static final int VIEW_TYPE_EMPTY = 0; + + public int myiewType; + + + @NonNull + @Override + public T onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return null; + } + + @Override + public void onBindViewHolder(@NonNull T holder, int position) { + + } + + @Override + public int getItemCount() { + return 0; + } + + + + + static class ViewHolderEmpty extends RecyclerView.ViewHolder { + ItemNoMoreBinding mBinding; + public ItemNoMoreBinding getBinding() { + return mBinding; + } + + public void setBinding(ItemNoMoreBinding binding) { + this.mBinding = binding; + } + + public ViewHolderEmpty(ItemNoMoreBinding itemView) { + super(itemView.getRoot()); + this.mBinding = itemView; + + } + } + + +} diff --git a/app/src/main/java/com/dayu/recharge/adapter/NewCardAdapter.java b/app/src/main/java/com/dayu/recharge/adapter/NewCardAdapter.java index 34cfc6d..72b7380 100644 --- a/app/src/main/java/com/dayu/recharge/adapter/NewCardAdapter.java +++ b/app/src/main/java/com/dayu/recharge/adapter/NewCardAdapter.java @@ -1,12 +1,20 @@ package com.dayu.recharge.adapter; import android.content.Context; +import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ViewDataBinding; +import androidx.recyclerview.widget.RecyclerView; + import com.dayu.recharge.R; +import com.dayu.recharge.databinding.ItemNewCardBinding; +import com.dayu.recharge.databinding.ItemNoMoreBinding; import com.dayu.recharge.dbBean.UserCardBean; import com.dayu.recharge.utils.DateUtil; @@ -16,7 +24,7 @@ * Created by zuoxiao on 2018/12/24. */ -public class NewCardAdapter extends BaseAdapter { +public class NewCardAdapter extends BaseRecyclerAdapter<RecyclerView.ViewHolder> { List<UserCardBean> rechargeList; Context mContext; @@ -26,51 +34,69 @@ this.rechargeList = rechargeList; } + + @NonNull @Override - public int getCount() { - if (rechargeList == null) { - return 0; + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (viewType == VIEW_TYPE_EMPTY) { + ItemNoMoreBinding emptyView = DataBindingUtil.inflate((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE), R.layout.item_no_more, parent, false); + return new ViewHolderEmpty(emptyView); + } else { + ItemNewCardBinding binding = DataBindingUtil.inflate((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE), R.layout.item_new_card, parent, false); + return new ViewHolder(binding); + } + + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (holder instanceof ViewHolder) { + if (rechargeList.size() > 0) { + ((ViewHolder) holder).getBinding().userName.setText("鐢ㄦ埛鍚�:" + rechargeList.get(position).getUserName()); + ((ViewHolder) holder).getBinding().userNo.setText("韬唤璇佸彿:" + rechargeList.get(position).getUserID()); + ((ViewHolder) holder).getBinding().water.setText("鐢佃瘽:" + rechargeList.get(position).getPhone()); + ((ViewHolder) holder).getBinding().date.setText("鏃ユ湡:" + DateUtil.dateToStamp(rechargeList.get(position).getDate(), DateUtil.type1)); + } + } + } + + @Override + public int getItemCount() { + //鍚屾椂杩欓噷涔熼渶瑕佹坊鍔犲垽鏂紝濡傛灉mData.size()涓�0鐨勮瘽锛屽彧寮曞叆涓�涓竷灞�锛屽氨鏄痚mptyView + // 閭d箞锛岃繖涓猺ecyclerView鐨刬temCount涓�1 + if (rechargeList.size() == 0) { + return 1; } return rechargeList.size(); } @Override - public Object getItem(int position) { - return position; - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - NewCardAdapter.ViewHolder holder = null; - if (convertView == null) { - holder = new NewCardAdapter.ViewHolder(); - convertView = View.inflate(mContext, R.layout.item_new_card, null); - holder.userName = (TextView) convertView.findViewById(R.id.userName); - holder.userNo = (TextView) convertView.findViewById(R.id.userNo); - holder.water = (TextView) convertView.findViewById(R.id.water); - holder.date = (TextView) convertView.findViewById(R.id.date); - - convertView.setTag(holder); + public int getItemViewType(int position) { + if (rechargeList.size() == 0) { + return VIEW_TYPE_EMPTY; } else { - holder = (NewCardAdapter.ViewHolder) convertView.getTag(); + return VIEW_TYPE_ITEM; } - holder.userName.setText("鐢ㄦ埛鍚�:" + rechargeList.get(position).getUserName()); - holder.userNo.setText("韬唤璇佸彿:" + rechargeList.get(position).getUserID()); - holder.water.setText("鐢佃瘽:" + rechargeList.get(position).getPhone()); - holder.date.setText("鏃ユ湡:" + DateUtil.dateToStamp(rechargeList.get(position).getDate(), DateUtil.type1)); - return convertView; } - class ViewHolder { - TextView userName; - TextView userNo; - TextView water; - TextView date; + static class ViewHolder extends RecyclerView.ViewHolder { + ItemNewCardBinding mBinding; + + public ItemNewCardBinding getBinding() { + return mBinding; + } + + public void setBinding(ItemNewCardBinding binding) { + this.mBinding = binding; + } + + public ViewHolder(ItemNewCardBinding itemView) { + super(itemView.getRoot()); + this.mBinding = itemView; + + } } + + } diff --git a/app/src/main/java/com/dayu/recharge/dao/BaseDaoSingleton.java b/app/src/main/java/com/dayu/recharge/dao/BaseDaoSingleton.java index 07d53c1..d5eb368 100644 --- a/app/src/main/java/com/dayu/recharge/dao/BaseDaoSingleton.java +++ b/app/src/main/java/com/dayu/recharge/dao/BaseDaoSingleton.java @@ -39,7 +39,7 @@ AsynchBaseDao = Room.databaseBuilder( context, AppDatabase.class, - "ConfigurationData" + SqlitePath + "ConfigurationData" ).build(); } return AsynchBaseDao; diff --git a/app/src/main/java/com/dayu/recharge/dao/UserCardDao.java b/app/src/main/java/com/dayu/recharge/dao/UserCardDao.java index 5ab72db..4e1dc5f 100644 --- a/app/src/main/java/com/dayu/recharge/dao/UserCardDao.java +++ b/app/src/main/java/com/dayu/recharge/dao/UserCardDao.java @@ -35,4 +35,9 @@ List<UserCardBean> findByTime(long beginTime, long endTime); @Query("select * from UserCardBean where userName like :data or userID like :data or phone like :data") List<UserCardBean> findByData(String data); + + @Query("select * from UserCardBean order by date desc LIMIT :limit OFFSET :offset") + List<UserCardBean> findAll(int offset,int limit); + @Query("select COUNT(*) from UserCardBean") + int getUserTotale(); } diff --git a/app/src/main/res/layout/activity_newcard_list.xml b/app/src/main/res/layout/activity_newcard_list.xml index b170f31..add0af0 100644 --- a/app/src/main/res/layout/activity_newcard_list.xml +++ b/app/src/main/res/layout/activity_newcard_list.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" @@ -14,13 +14,36 @@ app:leftImage="@mipmap/icon_back" app:rightText="绛涢��" /> - <ListView - android:id="@+id/newCard_listView" + + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" - android:cacheColorHint="#ffffff" - android:divider="@null" - android:dividerHeight="0dp" /> + android:layout_above="@id/user_total" + android:layout_below="@+id/titleBar"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="#fff" + android:overScrollMode="never" + android:padding="10dp" /> + + <com.scwang.smart.refresh.footer.ClassicsFooter + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> -</LinearLayout> \ No newline at end of file + <TextView + android:id="@+id/user_total" + android:layout_width="match_parent" + android:layout_height="50dp" + android:layout_alignParentBottom="true" + android:background="@color/title_bg" + android:gravity="center" + android:text="宸插垱寤虹敤鎴凤細" + android:textSize="@dimen/text_size" /> + +</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recharge_list.xml b/app/src/main/res/layout/activity_recharge_list.xml index f1726f4..e9994ce 100644 --- a/app/src/main/res/layout/activity_recharge_list.xml +++ b/app/src/main/res/layout/activity_recharge_list.xml @@ -31,7 +31,7 @@ android:layout_alignParentBottom="true" android:background="@color/title_bg" android:gravity="center" - android:text="绱鍏呭�硷細" + android:text="宸插姞杞芥暟鎹疮璁″厖鍊硷細" android:textSize="@dimen/text_size" /> </RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_new_card.xml b/app/src/main/res/layout/item_new_card.xml index 5c63167..574e7eb 100644 --- a/app/src/main/res/layout/item_new_card.xml +++ b/app/src/main/res/layout/item_new_card.xml @@ -1,57 +1,66 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> + + +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + <LinearLayout android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginLeft="15dp" - android:layout_marginTop="10dp" - android:layout_marginRight="15dp" + android:layout_height="match_parent" android:orientation="vertical"> - <TextView - android:id="@+id/userName" + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_weight="1" - android:text="鐢ㄦ埛鍚�" - android:textSize="14sp" /> + android:layout_marginLeft="15dp" + android:layout_marginTop="10dp" + android:layout_marginRight="15dp" + android:orientation="vertical"> - <TextView - android:id="@+id/userNo" + <TextView + android:id="@+id/userName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鐢ㄦ埛鍚�" + android:textSize="14sp" /> + + <TextView + android:id="@+id/userNo" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鎴峰彿锛�123123" + android:textSize="14sp" /> + + <TextView + android:id="@+id/water" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="姘撮噺锛�123123" + android:textSize="14sp" /> + + <TextView + android:id="@+id/date" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鏃ユ湡" + android:textSize="14sp" /> + + + </LinearLayout> + + + <View android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="鎴峰彿锛�123123" - android:textSize="14sp" /> - - <TextView - android:id="@+id/water" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="姘撮噺锛�123123" - android:textSize="14sp" /> - - <TextView - android:id="@+id/date" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="鏃ユ湡" - android:textSize="14sp" /> - + android:layout_height="1px" + android:layout_marginTop="15dp" + android:background="#000000" /> </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginTop="15dp" - android:background="#000000" /> +</layout> -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_no_more.xml b/app/src/main/res/layout/item_no_more.xml new file mode 100644 index 0000000..2127db5 --- /dev/null +++ b/app/src/main/res/layout/item_no_more.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> + +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/white" + android:gravity="center" + android:orientation="vertical"> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="50dp" + android:layout_marginRight="50dp" + android:src="@mipmap/ic_no_more" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:text="娌℃湁鏁版嵁" + android:textColor="@color/choose_grey" /> + + + </LinearLayout> +</layout> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xhdpi/ic_no_more.png b/app/src/main/res/mipmap-xhdpi/ic_no_more.png new file mode 100644 index 0000000..4769505 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_no_more.png Binary files differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d1be4a7..b0f58e3 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -20,6 +20,7 @@ <color name="date_picker_text_dark">#333333</color> <color name="ws_pay_alpha">#00000000</color> <color name="red">#ff0000</color> - + <color name="white">#FFFFFFFF</color> <color name="text_wite">#ffffff</color> + <color name="choose_grey">#cdcdcd</color> </resources> -- Gitblit v1.8.0