1. Trang chủ
  2. » Công Nghệ Thông Tin

DỰ ÁN 1 NGHÀNH LẬP TRÌNH MÁY TÍNH(LẬP TRÌNH MOBILE)

68 399 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 1,74 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

HỆ THỐNG QUẢN LÝ THU CHI 1.3 USE CASE Chi tiết chức năng o Chức năng quản lý người dùng: Khoảng thu Máy tính Người dùng Đăng nhập và đăng xuất Khoảng chi Thống kê... o Khoảng thu:

Trang 1

The College of FPT Polytechnic in Danang

2 Ngô Hoàng Linh(PD02236)

3 Nguyễn Xuân Vin(PD02108)

Đà Nẵng, Ngày 01 Tháng 12 Năm 2018

Trang 2

MỤC LỤC

1 Phân tích 2 1.1 Hiện trạng 2 1.2 Yêu cầu hệ thống Error! Bookmark not defined

1.3 Use case Error! Bookmark not defined

2 Thiết kế Error! Bookmark not defined

2.1 Mô hình triển khai Error! Bookmark not defined

2.1.1 Sơ đồ quan hệ thực thể Error! Bookmark not defined

2.1.2 Thiết kế chi tiết các thực thể Error! Bookmark not defined

2.2 Thiết kế giao diện Error! Bookmark not defined 2.2.1 Sơ đồ tổ chức giao diện Error! Bookmark not defined

2.2.2 Thiết kế giao diện cho các chức năng nghiệp vụ Error! Bookmark not defined

3 Thực hiện viết mã Error! Bookmark not defined

3.1 Tạo SQLite truy vấn, thao tác & truy suất dữ liệu Error! Bookmark not defined 3.2 Model clas- các lớp mô tả dữ liệu Error! Bookmark not defined 3.2.1 Class users Error! Bookmark not defined

3.3.2 Class Incomes Error! Bookmark not defined

3.3.3 Clas Expenses Error! Bookmark not defined

3.3 Viết mã cho các chức năng Error! Bookmark not defined

1 Welcome Error! Bookmark not defined

2 Login Error! Bookmark not defined

2.1 Login sign in Error! Bookmark not defined 2.2 Login sign up Error! Bookmark not defined 2.3 Login activity Error! Bookmark not defined

3 Main activity Error! Bookmark not defined

3.1 Menu drawer Error! Bookmark not defined

3.2 Menu bottom Error! Bookmark not defined

3.3 Main activity Error! Bookmark not defined

4 Spend Error! Bookmark not defined 4.1 InComes Error! Bookmark not defined 4.1Adapter incomes Error! Bookmark not defined 4.1 Details incomes Error! Bookmark not defined 4.3 Fragment incomes Error! Bookmark not defined

Trang 3

4.2 Expenses Error! Bookmark not defined 4.1Adapter Expenses Error! Bookmark not defined 4.1 Details Expenses Error! Bookmark not defined 4.1 Fragment Expenses Error! Bookmark not defined

5 About us Error! Bookmark not defined

6 Spend Error! Bookmark not defined

7 Statiscal Error! Bookmark not defined

1 PHÂN TÍCH

1.1 HIỆN TRẠNG

Việc quản lý tài chính hiện tại của mọi người đang gặp rất nhiều khó khắn, về vấn đề khoảng thu cũng như vấn đề khoảng chi, họ đang làm tất cả mọi công việc thu chi trên sổ sách bằng tay nên việc này gây rất nhiều khó khăn cho người quản lý thu chi trong quán cũng như việc quản lý thu chi trong gia đình nó rất dể gây sai sót, tốn thời gian và khó tìm kiếm Vì vậy chúng tôi phát triển nên ứng dụng quản lý thu chi để giải quyết vấn đề quản lý thu chi trong mọi người

1.2 Yêu cầu hệ thống:

Chúng tôi muốn xây dựng nên một phần mềm chạy trên thiết bị di động cá nhân để

dể dàng hổ trợ cho người dùng

 Chức năng nghiệp vụ:

o Quản lý khoảng thu

o Quản lý khoảng chi

o Thống kê theo ngày, tuần, tháng…

o Muốn dùng ứng dụng người dùng phải đăng ký và đăng nhập…

 Yêu cầu hệ thống công nghệ:

o Ứng dụng cài đặt trên điện thoại chạy hệ điều hành android

o Hệ quản trị CSDL là SQLite

Trang 4

HỆ THỐNG QUẢN LÝ THU CHI 1.3 USE CASE

 Chi tiết chức năng

o Chức năng quản lý người dùng:

Khoảng thu

Máy tính

Người dùng

Đăng nhập và đăng xuất

Khoảng chi

Thống kê

Trang 5

 Xem: xem tất cả và chi tiết thông tin của người dùng

 Thêm: thêm mới vào cơ sở dữ liệu

 Xóa: xóa theo mã

 Sửa: cập nhập dữ liệu đang xem

o Chức năng thống kê:

 Thống kê theo ngày, tuần, tháng và năm

o Chức năng nhập và đăng xuất

 Đăng ký: để có thể đăng nhập được bạn phải đăng ký trước

 Đăng nhập: để sử dụng phần mềm, bắt buộc phải đăng nhập

 Đăng xuất: thoát khỏi và trở về màn hình đăng nhập

 Chi tiết bảo mật

o Tất cả phải đăng nhập mới được sử dụng các chức năng trong phần mềm Và chỉ

có admin mới được xem và thay đổi thong tin của tất cả người dùng khi họ không thể thực hiện được

Trang 6

o Khoảng thu: lưu các khoảng tiền thu vào của người dùng

o Khoảng chi: số tiền cần chi ra của người dùng

o Thống kê: lưu các thông tin về thống kê khoảng thu, khoảng chi ngày, tháng và năm

2.1.2 Thiết kế chi tiết các thực thể

Bảng người dùng

email NVARCHAR(50) NOT NULL Email nguoi dùng sodienthoai INT NOT NULL Số điện thoại người

dùng

Trang 7

Bảng khoảng thu

tenKT NVARCHAR(50) NOT NULL Tên khoảng thu

chuthich NVARCHAR(50) NOT NULL Chú thích

Bảng khoảng chi

tenKC NVARCHAR(50) NOT NULL Tên khoảng chi

sotiendukien DOUBLE NOT NULL Số tiền dự kiến

ngaydukienchi DATE NOT NULL Ngày dự kiến chi

chuthich NVARCHAR(50) NOT NULL Chú thích

Bảng sổ nợ

chuthich NVARCHAR(50) NOT NULL Chú thích

Trang 8

2.2 THIẾT KẾ GIAO DIỆN

2.2.1 Sơ đồ tổ chức giao diện

Thống kê Khoảng thu chi

Thông tin người

dùng

Bật tắc bottom

Đăng xuất

Giao diện chính Thống kê

Khoảng thu

chi

Máy tính Khoảng

nợ

Trang 9

2.2.2 Thiết kế giao diện cho các chức năng nghiệp vụ

3.1 TẠO SQLITE TRUY VẤN, THAO TÁC VÀ TRUY SUẤT DỮ LIỆU

public class my_database extends SQLiteOpenHelper {

private static final String DB_NAME = “expenditure”;

private static final int VERSION = 1;

private static final String TB_USERS = “CREATE TABLE USERS(\n ” +

“idUser INTEGER PRIMARY KEY AUTOINCREMENT, \n ” +

“nameUser TEXT, \n ” +

“passUser TEXT, \n ” +

“emailUser TEXT, \n ” +

“phoneUser TEXT, \n ” +

“CONSTRAINT name_unique UNIQUE (nameUser) )”;

private static final String TB_INCOMES = “CREATE TABLE INCOMES(\n ” +

“idIC INTEGER PRIMARY KEY AUTOINCREMENT, \n ” +

Trang 10

public my_database(Context context) {

super( context, DB_NAME, null, VERSION );

//query not return

public void query(String sql){

//insert data table user

public int insertDataUser(users us){

SQLiteDatabase db = getWritableDatabase();

ContentValues value = new ContentValues();

value.put( “nameUser”, us.getmName() );

value.put( “passUser”, us.getmPass() );

value.put( “emailUser”, us.getmEmail() );

value.put( “phoneUser”, us.getmPhone() );

if(db.insert( “USERS”, null, value ) == -1){

return -1;

}

return 1;

}

// insert data table fragment_incomes

public int insertDataIncomes(incomes ic){

Trang 11

SQLiteDatabase db = getWritableDatabase();

ContentValues value = new ContentValues( );

value.put( “nameIC”, ic.getmName() );

value.put( “amountIC” ,ic.getmAmount());

value.put( “actualDateIC”, ic.getmActualDate() );

value.put( “typeIC”, ic.getmType() );

value.put( “noteIC”, ic.getmNote() );

value.put( “idUser”, ic.getmIdUser());

if(db.insert( “INCOMES”, null, value ) == -1){

return -1;

}

return 1;

}

//insert data table fragment_expenses

public int insertDataExpenses(expenses ep){

SQLiteDatabase db = getWritableDatabase();

ContentValues value = new ContentValues();

value.put( “nameEP”, ep.getmName() );

value.put( “expected_amount”, ep.getmExpectedAmount() );

value.put( “expected_date”, ep.getmExpectedDate() );

value.put( “amountEP”, ep.getmAmount() );

value.put( “actualDateEP”, ep.getmActualDate() );

value.put( “typeEP”, ep.getmType() );

value.put( “noteEP”, ep.getmNote() );

value.put( “idUser”, ep.getmIdUser() );

if(db.insert( “EXPENSES”, null, value ) == -1){

return -1;

}

return 1;

}

//check user login

public int checkUser(String u, String p){

int id = -1;

SQLiteDatabase db = getReadableDatabase();

Cursor c = db.rawQuery( “SELECT idUser FROM ‘USERS’ \n ” +

“WHERE nameUser = ‘” + u + “’ and passUser = ‘”+ p +”’”, null );

Trang 12

}

// get data table User

public List<users> getDataUsers(){

List<users> listUser = new ArrayList<>();

SQLiteDatabase db = getWritableDatabase();

Cursor c = db.query( “USERS”, null, null,null,null,null,null );

c.moveToFirst();

while(!c.isAfterLast()){

users us = new users();

us.setmID( Integer.parseInt( c.getString( 0 ) ));

//get data form table fragment_incomes

public List<incomes> getDataIncomes(){

List<incomes> listIncomes = new ArrayList<>();

SQLiteDatabase db = getWritableDatabase();

Cursor c = db.query( “INCOMES”, null,null,null,null,null,null );

c.moveToFirst();

while (!c.isAfterLast()){

incomes ic = new incomes();

ic.setmID( Integer.parseInt( c.getString( 0 ) ) );

Trang 13

//get data form table fragment_expenses

public List<expenses> getDataExpenses() {

List<expenses> listExpenses = new ArrayList<>();

SQLiteDatabase db = getWritableDatabase();

Cursor c = db.query( “EXPENSES”, null, null, null, null, null, null );

c.moveToFirst();

while (!c.isAfterLast()) {

expenses ep = new expenses();

ep.setmID( Integer.parseInt( c.getString( 0 ) ) );

Trang 14

3.2 Model class- các lớp mô tả dữ liệu

1 Class users:

public class users {

private String mName, mPass, mEmail, mPhone;

private int mID;

public users() {

}

public users(String mName, String mPass, String mEmail, String mPhone) { this.mName = mName;

this.mPass = mPass;

this.mEmail = mEmail;

this.mPhone = mPhone;

}

public String getmName() {

return mName;

}

public void setmName(String mName) {

this.mName = mName;

}

public String getmPass() {

return mPass;

}

public void setmPass(String mPass) {

this.mPass = mPass;

}

public String getmEmail() {

return mEmail;

}

public void setmEmail(String mEmail) {

this.mEmail = mEmail;

}

public String getmPhone() {

return mPhone;

Trang 15

}

public void setmPhone(String mPhone) {

this.mPhone = mPhone;

}

public int getmID() {

return mID;

}

public void setmID(int mID) {

this.mID = mID;

}

}

2 Incomes:

public class incomes {

private int mID, mIdUser;

private double mAmount;

private String mName, mActualDate, mType, mNote;

public incomes() {

}

public incomes( int mIdUser, String mName, double mAmount, String

mActualDate, String mType, String mNote) {

this.mIdUser = mIdUser;

this.mName = mName;

this.mAmount = mAmount;

this.mActualDate = mActualDate;

this.mType = mType;

this.mNote = mNote;

}

public int getmID() {

return mID;

}

public void setmID(int mID) {

this.mID = mID;

}

Trang 16

public int getmIdUser() {

return mIdUser;

}

public void setmIdUser(int mIdUser) {

this.mIdUser = mIdUser;

}

public double getmAmount() {

return mAmount;

}

public void setmAmount(double mAmount) {

this.mAmount = mAmount;

}

public String getmName() {

return mName;

}

public void setmName(String mName) {

this.mName = mName;

}

public String getmActualDate() {

return mActualDate;

}

public void setmActualDate(String mActualDate) {

this.mActualDate = mActualDate;

}

public String getmType() {

return mType;

}

public void setmType(String mType) {

this.mType = mType;

}

public String getmNote() {

return mNote;

}

Trang 17

public void setmNote(String mNote) {

this.mNote = mNote;

}

}

3 Expenses

public class expenses {

private int mID, mIdUser;

private double mExpectedAmount, mAmount;

private String mName, mExpectedDate, mActualDate, mType, mNote;

public expenses() {

}

public expenses( int mIdUser, double mExpectedAmount, double mAmount, String mName, String mExpectedDate, String mActualDate, String mType, String mNote) {

this.mIdUser = mIdUser;

this.mExpectedAmount = mExpectedAmount;

this.mAmount = mAmount;

this.mName = mName;

this.mExpectedDate = mExpectedDate;

this.mActualDate = mActualDate;

this.mType = mType;

this.mNote = mNote;

}

public int getmID() {

return mID;

}

public void setmID(int mID) {

this.mID = mID;

}

public int getmIdUser() {

return mIdUser;

}

public void setmIdUser(int mIdUser) {

this.mIdUser = mIdUser;

Trang 18

}

public double getmExpectedAmount() {

return mExpectedAmount;

}

public void setmExpectedAmount(double mExpectedAmount) {

this.mExpectedAmount = mExpectedAmount;

}

public double getmAmount() {

return mAmount;

}

public void setmAmount(double mAmount) {

this.mAmount = mAmount;

}

public String getmName() {

return mName;

}

public void setmName(String mName) {

this.mName = mName;

}

public String getmExpectedDate() {

return mExpectedDate;

}

public void setmExpectedDate(String mExpectedDate) {

this.mExpectedDate = mExpectedDate;

}

public String getmActualDate() {

return mActualDate;

}

public void setmActualDate(String mActualDate) {

this.mActualDate = mActualDate;

}

public String getmType() {

Trang 19

return mType;

}

public void setmType(String mType) {

this.mType = mType;

}

public String getmNote() {

return mNote;

}

public void setmNote(String mNote) {

this.mNote = mNote;

public class login_sign_in extends Fragment {

private View mView;

private my_database db;

Trang 20

private TextInputEditText user, pass;

private CheckBox checkBox;

//get value login

user.setText( spf.getString( "USER", "" ) );

// pass.setText( spf.getString( "PASS", "" ) );

checkBox.setChecked( spf.getBoolean( "CHECK", false ) );

//even click cancel

//event click login

rememberUser( u, p, checkBox.isChecked() );

Intent i = new Intent(getActivity(), MainActivity.class );

Trang 21

private void anhxa(View v) {

db = new my_database( getActivity() );

user = v.findViewById( R.id.edtUser );

pass = v.findViewById( R.id.edtPass );

btnLogin = v.findViewById( R.id.btnLogin );

btnCancel = v.findViewById( R.id.btnCanel );

TextView tvRegister = v.findViewById( R.id.tvNewAccount );

checkBox = v.findViewById( R.id.cbRemember );

tvRegister.setOnClickListener( new View.OnClickListener() {

@Override

public void onClick(View v) {

FragmentManager fragment = getActivity().getSupportFragmentManager(); FragmentTransaction transaction = fragment.beginTransaction();

transaction.replace( R.id.loginContainer, new login_sign_up() );

transaction.commit();

}

} );

}

private void Notification(String text){

AlertDialog.Builder builder = new AlertDialog.Builder( getActivity() );

public void rememberUser(String u, String p, boolean status){

SharedPreferences spf = getActivity().getSharedPreferences( "USERS_FILE", Context.MODE_PRIVATE );

SharedPreferences.Editor editor = spf.edit();

if(!status){

//clear stata

Trang 22

public class login_sign_up extends Fragment {

private View mView;

private void anhxa(View v) {

db = new my_database( getActivity() );

final TextInputEditText user = v.findViewById( R.id.edtNewUser );

final TextInputEditText pass = v.findViewById( R.id.edtNewPass );

final TextInputEditText email = v.findViewById( R.id.edtNewEmail );

final TextInputEditText phone = v.findViewById( R.id.edtNewPhone );

Button btnRegister = v.findViewById( R.id.btnNewRegister );

Button btnCancel = v.findViewById( R.id.btnNewCanel );

//event click cancel

Trang 23

btnRegister.setOnClickListener( new View.OnClickListener() {

Nofitication( "User name can't empty!" );

user.setBackgroundResource( R.drawable.login_err_edit_text );

} else {

user.setBackgroundResource( R.drawable.login_bg_edit_text );

}

if (p.isEmpty()) {

Nofitication( "Password can't empty!" );

pass.setBackgroundResource( R.drawable.login_err_edit_text );

} else {

pass.setBackgroundResource( R.drawable.login_bg_edit_text );

}

if (e.isEmpty()) {

Nofitication( "Email can't empty!" );

email.setBackgroundResource( R.drawable.login_err_edit_text );

} else {

email.setBackgroundResource( R.drawable.login_bg_edit_text );

}

if (t.isEmpty()) {

Nofitication( "Phone number can't empty!" );

phone.setBackgroundResource( R.drawable.login_err_edit_text ); } else {

phone.setBackgroundResource( R.drawable.login_bg_edit_text );

Trang 24

if(check_pass && check_phone){

users us = new users( u, p, e, t );

listUser.add( us );

if(db.insertDataUser( us ) > 0){

Toast.makeText( getActivity(), "Register Success!",

Toast.LENGTH_SHORT ).show();

private void Nofitication(String text) {

AlertDialog.Builder builder = new AlertDialog.Builder( getActivity() );

Trang 25

2.3 Login activity

public class Login_Activity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate( savedInstanceState );

setContentView( R.layout.activity_login_ );

FragmentManager fragment = getSupportFragmentManager();

FragmentTransaction transaction = fragment.beginTransaction();

transaction.replace( R.id.loginContainer, new login_sign_in() );

<?xml version= "1.0" encoding= "utf-8"?>

<menu xmlns: android = "http://schemas.android.com/apk/res/android"

xmlns: app = "http://schemas.android.com/apk/res-auto">

<group android :checkableBehavior= "single">

<item android :id= "@+id/expenditure"

android :icon= "@drawable/ic_thu_chi"

android :title= "Spend" />

<item android :id= "@+id/thongKe"

android :icon= "@drawable/ic_thong_ke"

app :showAsAction= "always"

android :title= "Statiscal" />

</group>

<item android :title= "Other">

<menu>

<item android :id= "@+id/about_mn"

android :icon= "@drawable/about"

android :title= "About Us" />

<item android :id= "@+id/changepass"

android :icon= "@drawable/ab_pass"

android :title= "Change Password" />

<item android :id= "@+id/show_nav_bot"

Trang 26

android :title= "On/Off Navigation Bottom"

android :icon= "@drawable/ic_on_off_nav_bottom"

/>

<item android :id= "@+id/debt"

android :icon= "@drawable/ic_debt"

android :title= "Debt" />

<item android :id= "@+id/casio"

android :title= "Casio"

android :icon= "@drawable/ic_computer"

/>

<item android :id= "@+id/exit_mn"

android :icon= "@drawable/exit"

android :title= "Exit" />

</menu>

</item>

</menu>

3.2 Menu nav-bottom

<?xml version= "1.0" encoding= "utf-8"?>

<menu xmlns: android = "http://schemas.android.com/apk/res/android"

>

<item android :id= "@+id/nav_boot_spend"

android :title= "Spend"

android :icon= "@drawable/ic_thu_chi"

/>

<item android :id= "@+id/nav_boot_statiscal"

android :title= "Statiscal"

android :icon= "@drawable/ic_thong_ke"

/>

<item android :id= "@+id/nav_boot_about_us"

android :title= "About"

android :icon= "@drawable/about"

/>

</menu>

3.3 Main activity

Trang 27

public class MainActivity extends AppCompatActivity implements

NavigationView.OnNavigationItemSelectedListener {

private DrawerLayout mDrawerLayout;

public static int idUser;

private boolean checkOnOff = true;

private my_database db;

private String mUser, mEmail;

private BottomNavigationView bottomNavigation;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate( savedInstanceState );

setContentView( R.layout.activity_main );

ImageView imgLogo = findViewById( R.id.imgAvatarDra );

Toolbar toolbar = findViewById( R.id.my_toolbar );

setSupportActionBar( toolbar );

bottomNavigation = findViewById( R.id.nav_boot );

mDrawerLayout = findViewById( R.id.drawer_container );

NavigationView navigation = findViewById( R.id.navigation_view );

navigation.setNavigationItemSelectedListener( this );

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this,

mDrawerLayout, toolbar,

R.string.open_drawer_menu, R.string.close_drawer_menu );

mDrawerLayout.addDrawerListener( toggle );

View headerView = navigation.getHeaderView( 0 );

TextView tvUser = headerView.findViewById( R.id.tvUser );

TextView tvEmail = headerView.findViewById( R.id.tvEmail );

Trang 28

//click ic logo in drawer header

public void imgClick(View v){

getSupportFragmentManager().beginTransaction().replace( R.id.frame_container, new about_us()).commit();

mDrawerLayout.closeDrawer( GravityCompat.START );

}

private void getUserEmail(){

db = new my_database( this );

Cursor c = db.queryData( "SELECT nameUser, emailUser FROM USERS \n " +

"WHERE idUser = " + idUser + " " );

Trang 29

case R.id.show_nav_bot:

bottomNavigation = findViewById( R.id.nav_boot );

case R.id.exit_mn:

AlertDialog.Builder builder = new AlertDialog.Builder( this );

builder.setMessage( "Do you want exit?" );

builder.setTitle( "Exit" );

builder.setIcon( R.drawable.ic_warning_dialog );

builder.setNegativeButton( "No", new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) {

}

} );

builder.setPositiveButton( "Yes", new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) {

//come back activity MAIN

Intent i = new Intent( getApplicationContext(), MainActivity.class ); startActivity( i );

//Exit App

Intent startMain = new Intent( Intent.ACTION_MAIN );

startMain.addCategory( Intent.CATEGORY_HOME );

Trang 30

public void onBackPressed() {

if(mDrawerLayout.isDrawerOpen(GravityCompat.START )){

mDrawerLayout.closeDrawer( GravityCompat.START );

}else{

AlertDialog.Builder builder = new AlertDialog.Builder( this );

builder.setMessage( "Do you want exit?" );

builder.setTitle( "Exit" );

builder.setIcon( R.drawable.ic_warning_dialog );

builder.setNegativeButton( "No", new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) {

}

} );

builder.setPositiveButton( "Yes", new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) {

Intent i = new Intent( getApplicationContext(), MainActivity.class );

startActivity( i );

//Exit App

Intent startMain = new Intent( Intent.ACTION_MAIN );

startMain.addCategory( Intent.CATEGORY_HOME );

Trang 31

private fragment_incomes mContext;

private TextView tvEmpty;

private ImageView imgEmpty;

private RecyclerView mRcv;

int day, month, year, hour, minute;

int dayFinal, monthFinal, yearFinal, hourFinal, minuteFinal;

public Adapter_Incomes(List<incomes> list, fragment_incomes content,RecyclerView rcv ,TextView tv, ImageView img) {

this.mListIncomes = list;

this.mContext = content;

private void checkIfEpty() {

int check = getItemCount();

if(check == 0 ){

tvEmpty.setVisibility( View.VISIBLE );

imgEmpty.setVisibility( View.VISIBLE );

mRcv.setVisibility( View.GONE );

}else {

tvEmpty.setVisibility( View.GONE );

imgEmpty.setVisibility( View.GONE );

mRcv.setVisibility( View.VISIBLE );

}

}

Trang 32

@NonNull

@Override

public Adapter_Incomes.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

View itemView = LayoutInflater.from( parent.getContext()).inflate(

R.layout.recyler_view_custom_item, parent, false);

return new ViewHolder( itemView );

}

@Override

public void onBindViewHolder(@NonNull Adapter_Incomes.ViewHolder holder, int

position) {

holder.tvName.setText( mListIncomes.get( position ).getmName() );

holder.tvAmount.setText( "" + mListIncomes.get( position ).getmAmount() ); holder.tvDate.setText( mListIncomes.get( position ).getmActualDate() );

}

@Override

public int getItemCount() {

return mListIncomes.size();

ImageView icDel, icEdit;

TextView tvName, tvAmount, tvDate;

public ViewHolder(final View itemView) {

super( itemView );

itemView.setOnClickListener( this );

icDel = itemView.findViewById( R.id.icDelete );

icEdit = itemView.findViewById( R.id.icEdit );

tvName = itemView.findViewById( R.id.tvNameRcv );

tvAmount = itemView.findViewById( R.id.tvAmountRcv );

Trang 33

tvDate = itemView.findViewById( R.id.tvDateRcv );

//set magrin item view

public void onClick(View v) {

incomes ic= (incomes)mListIncomes.get( getPosition() );

DialogEdit( itemView.getContext(), ic.getmID(), ic.getmName() );

public void onClick(View v) {

incomes ic = (incomes) mListIncomes.get( getPosition() );

DialogDelete( itemView.getContext(), ic.getmName(), ic.getmID() );

}

} );

}

@Override

public void onClick(View v) {

details_incomes.position = getPosition();

mContext.getActivity().getSupportFragmentManager().beginTransaction().replace( R.id.frame_container, new details_incomes()

).commit();

}

}

//dialog delete itemview

private void DialogDelete(final Context context, final String nameIC, final int idIC){

db = new my_database( context );

final AlertDialog.Builder builder = new AlertDialog.Builder( context);

builder.setMessage( "Do you want delete named income \" " + nameIC + " \" ?" );

builder.setTitle( "Messager" );

Trang 34

builder.setIcon( R.drawable.ic_warning_dialog );

builder.setPositiveButton( "Yes", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

db.query( "DELETE FROM INCOMES \n " +

"WHERE nameIC = '" + nameIC + "' and idIC = " + idIC + ";" );

Toast.makeText( context, "Delete named income \" " + nameIC + "\"

complete!", Toast.LENGTH_SHORT ).show();

// dialog edit itemview

private void DialogEdit(final Context context, final int idIC, final String nameIC){

db= new my_database( context );

final Dialog dialog = new Dialog( context );

dialog.setCanceledOnTouchOutside( true );

dialog.requestWindowFeature( Window.FEATURE_NO_TITLE );

dialog.setContentView( R.layout.dialog_edit_data_incomes );

Window window = dialog.getWindow();

WindowManager.LayoutParams wlp = window.getAttributes();

wlp.gravity = Gravity.CENTER;

wlp.flags &= ~WindowManager.LayoutParams.FLAG_BLUR_BEHIND;

window.setAttributes( wlp );

dialog.getWindow().setLayout( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT );

//anh xa

Button btnCacel = dialog.findViewById( R.id.btnCancelEditIC );

final TextView tvShowDT = dialog.findViewById( R.id.tvEditShowDT );

final EditText edNameIC = dialog.findViewById( R.id.edtEditNameIC );

final EditText edAmoutIC = dialog.findViewById( R.id.edtEditAmoutIC );

final EditText edTypeIC = dialog.findViewById( R.id.edtEditTypeIC );

Ngày đăng: 03/08/2019, 11:00

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w