Tuy nhiên,đối với những người yêu thích cây cảnh nhưng không có nhiều thời gian hoặc kiến thức về việc tìm kiếm và chăm sóc các loại cây phù hợp, một ứng dụng mua bán cây cảnh trên điện
Tổng quan
Giới thiệu đề tài
Trong bối cảnh xã hội hiện đại ngày nay, nhu cầu sống gần gũi với thiên nhiên và chăm sóc cây cảnh đã trở thành một sở thích phổ biến của nhiều người Cây cảnh không chỉ giúp làm đẹp không gian sống mà còn mang lại cảm giác thư giãn, giảm căng thẳng cho chủ nhân Tuy nhiên, việc chăm sóc cây cảnh đòi hỏi người nuôi phải có kiến thức và sự quan tâm đặc biệt Đặc biệt, với những người không có nhiều thời gian hoặc không đủ kiến thức về các loài cây, việc tìm mua và chăm sóc cây cảnh trở thành một thách thức.
Với sự phát triển mạnh mẽ của công nghệ và Internet, xu hướng mua sắm trực tuyến đã ngày càng trở nên phổ biến, không chỉ trong các lĩnh vực tiêu dùng hàng hóa thông thường mà còn mở rộng sang các ngành nghề đặc thù như bán cây cảnh Tuy nhiên, việc tìm kiếm một nền tảng mua bán cây cảnh trực tuyến đáng tin cậy, dễ sử dụng và hỗ trợ người dùng trong việc lựa chọn và chăm sóc cây cảnh vẫn là một vấn đề chưa được giải quyết một cách triệt để. Để đáp ứng nhu cầu này, đề tài "Ứng Dụng Bán Cây Cảnh" được phát triển với mục tiêu tạo ra một nền tảng di động giúp người dùng dễ dàng tìm kiếm, mua bán và chăm sóc cây cảnh trực tuyến Ứng dụng sẽ cung cấp cho người dùng một công cụ tiện lợi để khám phá các loại cây cảnh, mua sắm trực tuyến, đồng thời nhận được các thông báo nhắc nhở về việc chăm sóc cây sau khi mua Người dùng có thể tìm hiểu thông tin chi tiết về các loài cây, các phương pháp chăm sóc, từ đó lựa chọn được những loại cây phù hợp với không gian sống và điều kiện chăm sóc của mình. Ứng dụng không chỉ hỗ trợ việc giao dịch mua bán mà còn cung cấp các dịch vụ gia tăng như lịch chăm sóc, đánh giá sản phẩm, giỏ hàng và thanh toán trực tuyến, giúp nâng cao trải nghiệm người dùng và đảm bảo quá trình mua bán cây cảnh diễn ra thuận tiện và an toàn.
Với tiềm năng phát triển mạnh mẽ của ngành thương mại điện tử và nhu cầu ngày càng cao đối với các sản phẩm cây cảnh, ứng dụng "Bán Cây Cảnh" hứa hẹn sẽ đáp ứng nhu cầu thực tế của người dùng, đồng thời đóng góp vào việc xây dựng một cộng đồng yêu thích cây cảnh trực tuyến, hỗ trợ công việc chăm sóc cây xanh trong đời sống hàng ngày.
Tổng quan về ứng dụng
Ứng dụng "Bán Cây Cảnh" là một nền tảng di động được thiết kế để giúp người dùng dễ dàng tìm kiếm, mua bán và chăm sóc cây cảnh trực tuyến Trong bối cảnh nhu cầu làm đẹp không gian sống và chăm sóc cây cảnh ngày càng gia tăng, ứng dụng này không chỉ đáp ứng yêu cầu mua sắm cây cảnh mà còn cung cấp các công cụ hỗ trợ người dùng trong việc lựa chọn và chăm sóc cây sau khi mua
Đối tượng sử dụng
Ứng dụng hướng đến các cửa hàng bán lẻ, cửa hàng online nhỏ lẻ hoặc các doanh nghiệp vừa và nhỏ có nhu cầu quản lý bán hàng một cách đơn giản, tiện lợi và nhanh chóng Bên cạnh đó, ứng dụng cũng phù hợp với các cá nhân bán hàng độc lập muốn quản lý công việc kinh doanh hiệu quả hơn.
Công nghệ sử dụng
Ứng dụng sẽ được xây dựng trên nền tảng mobile (có thể là Android, iOS hoặc cả hai) với các công nghệ và ngôn ngữ phổ biến trong phát triển di động như React Native, Flutter hoặc các công cụ native Cơ sở dữ liệu sẽ được thiết kế để lưu trữ thông tin an toàn và hiệu quả, giúp ứng dụng hoạt động ổn định và bảo mật cao.
Tóm lại, ứng dụng quản lý bán hàng sẽ cung cấp cho người dùng một công cụ mạnh mẽ, giúp họ tiết kiệm thời gian, nâng cao hiệu quả quản lý và tăng cường khả năng cạnh tranh trên thị trường.
Giới thiệu về Android Studio
Android Studio Là Gì?
Android Studio là một phầm mềm bao gồm các bộ công cụ khác nhau dùng để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như các loại điện thoại smartphone, các tablet Android Studio được đóng gói với một bộ code editor, debugger, các công cụ performance tool và một hệ thống build/deploy (trong đó có trình giả lập simulator để giả lập môi trường của thiết bị điện thoại hoặc tablet trên máy tính) cho phép các lập trình viên có thể nhanh chóng phát triển các ứng dụng từ đơn giản tới phức tạp.
Việc xây dựng một ứng dụng mobile (hoặc tablet) bao gồm rất nhiều các công đoạn khác nhau Đầu tiên chúng ta sẽ viết code ứng dụng sử dụng máy tính cá nhân hoặc laptop Sau đó chúng ta cần build ứng dụng để tạo file cài đặt Sau khi build xong thì chúng ta cần copy file cài đặt này vào thiét bị mobile (hoặc table) để tiến hành cài đặt ứng dụng và chạy kiểm thử (testing) Bạn thử tưởng tượng nếu với mỗi lần viết một dòng code bạn lại phải build ứng dụng, cài đặt trên điện thoại hoặc tablet và sau đó chạy thử thì sẽ vô cùng tốn thời gian và công sức Android Studio được phát triển để giải quyết các vấn đề này Với Android Studio tất cả các công đoạn trên được thực hiện trên cùng một máy tính và các quy trình được tinh gọn tới mức tối giản nhất.
Tiếp theo chúng ta sẽ tìm hiểu cách cài đặt Android Studio trên Windows, MacOSX và Linux.
Tầm quan trọng của Android Studio
Trong thế giới phát triển nhanh chóng của công nghệ di động, Android Studio đóng vai trò quan trọng giúp các lập trình viên tạo ra các ứng dụng Android chất lượng cao, hiệu quả và phù hợp với nhu cầu của người dùng Android Studio cung cấp các tính năng tiên tiến, tối ưu hóa quy trình làm việc và đảm bảo tính ổn định, an toàn cho ứng dụng.
Công cụ Android Studio được sử dụng rộng rãi trong khi hiện nay có rất nhiều công cụ khác hỗ trợ các developer phát triển các ứng dụng trên nền tảng Android Vậy ưu điểm của công cụ này là gì?
● Môi trường phát triển tích hợp (IDE) mạnh mẽ với nhiều công cụ hỗ trợ lập trình:
Android Studio cung cấp một môi trường lập trình tích hợp đầy đủ các tính năng cần thiết cho quá trình phát triển ứng dụng Android Trình soạn thảo mã nguồn với đèn gợi ý, tự động điền mã, thực thi mã, gỡ lỗi (debug) và các tính năng tiện ích khác giúp lập trình viên viết mã nhanh chóng và hiệu quả hơn Ngoài ra, Android Studio còn cung cấp công cụ kiểm tra và phân tích mã nguồn, công cụ quản lý phiên bản và nhiều tiện ích khác hỗ trợ quá trình phát triển.
● Trình thiết kế giao diện trực quan, giúp dễ dàng tạo và chỉnh sửa giao diện người dùng:
Một trong những tính năng nổi bật của Android Studio là trình thiết kế giao diện người dùng (UI) trực quan Lập trình viên có thể kéo thả các thành phần giao diện, xem trước và chỉnh sửa giao diện ứng dụng một cách dễ dàng mà không cần viết mã Điều này giúp tiết kiệm thời gian và nâng cao hiệu quả trong việc thiết kế giao diện người dùng đẹp mắt và thân thiện.
● Hệ thống xây dựng Gradle linh hoạt, quản lý thư viện và tự động hóa quy trình xây dựng:
Android Studio sử dụng hệ thống xây dựng Gradle, một công cụ xây dựng linh hoạt và mạnh mẽ Gradle giúp quản lý các thư viện và phụ thuộc, tự động hóa các tác vụ xây dựng, tối ưu hóa mã và thực hiện các kiểm tra chất lượng mã nguồn Điều này giúp lập trình viên dễ dàng quản lý các phần phụ thuộc của dự án và tự động hóa các quy trình xây dựng, triển khai ứng dụng.
● Trình giả lập Android (Emulator) cho phép kiểm tra ứng dụng trên nhiều thiết bị ảo:
Android Studio bao gồm một trình giả lập Android mạnh mẽ, cho phép lập trình viên tạo và chạy ứng dụng trên các thiết bị ảo khác nhau với các kích thước màn hình, cấu hình phần cứng và phiên bản Android khác nhau Điều này giúp kiểm tra và đảm bảo ứng dụng hoạt động tốt trên nhiều thiết bị khác nhau mà không cần sử dụng thiết bị vật lý.
● Tích hợp với các dịch vụ và công cụ của Google như Firebase, Google
Android Studio tích hợp sẵn với các dịch vụ và công cụ của Google như Firebase (cơ sở dữ liệu đám mây, xác thực người dùng, lưu trữ tệp, v.v.), Google Play Services (Bản đồ, Thanh toán, Xác thực người dùng, v.v.) và nhiều dịch vụ khác Điều này giúp lập trình viên dễ dàng tích hợp các tính năng của Google vào ứng dụng một cách trơn tru.
● Hỗ trợ nhiều ngôn ngữ lập trình như Java, Kotlin và C/C++:
Android Studio hỗ trợ nhiều ngôn ngữ lập trình phổ biến trong phát triển ứng dụng Android, bao gồm Java, Kotlin và C/C++ Java và Kotlin là hai ngôn ngữ chính để phát triển ứng dụng Android, trong đó Kotlin ngày càng được ưa chuộng hơn nhờ cú pháp hiện đại và các tính năng an toàn hơn Ngoài ra, lập trình viên cũng có thể sử dụng C/C++ để viết các thành phần ứng dụng yêu cầu hiệu năng cao.
Tuy nhiên, Android Studio vẫn có những nhược điểm như sau:
● Yêu cầu phần cứng tương đối mạnh: Android Studio đòi hỏi một máy tính có cấu hình tương đối mạnh để chạy mượt mà Điều này có thể làm giảm hiệu suất và tốn nhiều tài nguyên hệ thống.
● Kích thước lớn: Android Studio có kích thước tải về khá lớn, đòi hỏi không gian lưu trữ đáng kể trên máy tính Điều này có thể khiến việc cài đặt và cập nhật trở nên chậm chạp và tốn tài nguyên.
LỰA CHỌN NGÔN NGỮ JAVA TRONG THIẾT KẾ 7 2.1 Khái niệm
Đặc điểm của Java
● Ngôn ngữ hướng đối tượng (OOP): Java hỗ trợ lập trình hướng đối tượng một cách triệt để, cho phép mô hình hóa các đối tượng trong thế giới thực thành mã nguồn Điều này giúp mã nguồn rõ ràng hơn, dễ bảo trì và tái sử dụng.
● Đa nền tảng: Nhờ vào Java Virtual Machine (JVM), Java có thể chạy trên nhiều hệ điều hành khác nhau (Windows, Linux, MacOS) mà không cần thay đổi mã nguồn Đây là điểm mạnh lớn của Java, giúp các ứng dụng có thể phát triển trên nhiều nền tảng khác nhau.
● An toàn và bảo mật: Java cung cấp nhiều tính năng bảo mật như bảo vệ bộ nhớ, kiểm soát truy cập thông qua cơ chế đóng gói (encapsulation), và hỗ trợ kiểm soát truy cập lớp, giúp ngăn chặn các cuộc tấn công và lỗi bộ nhớ.
● Quản lý bộ nhớ tự động: Java có Garbage Collector tự động quản lý và thu hồi bộ nhớ, giúp giảm nguy cơ rò rỉ bộ nhớ và tăng hiệu suất cho ứng dụng.
● Hỗ trợ mạnh cho lập trình đa luồng (multithreading): Java hỗ trợ lập trình đa luồng giúp xử lý nhiều công việc đồng thời, phù hợp với các ứng dụng cần xử lý nhiều tác vụ song song hoặc các ứng dụng yêu cầu hiệu suất cao.
Ưu điểm của Java
● Dễ đọc và dễ học: Java có cú pháp rõ ràng và được thiết kế để dễ học, phù hợp cho cả người mới bắt đầu và lập trình viên giàu kinh nghiệm.
● Thư viện phong phú: Hệ sinh thái của Java bao gồm một lượng lớn thư viện và framework phong phú (Spring, Hibernate, Apache Struts, v.v.) giúp đơn giản hóa quá trình phát triển và tăng năng suất.
● Cộng đồng lớn: Java có một cộng đồng lập trình viên lớn và lâu đời, cung cấp tài liệu, hướng dẫn và hỗ trợ mạnh mẽ Việc tìm kiếm tài liệu học tập, ví dụ mã nguồn, và trao đổi kinh nghiệm trở nên dễ dàng nhờ cộng đồng này.
● Khả năng mở rộng và bảo trì: Các ứng dụng viết bằng Java dễ dàng mở rộng và bảo trì nhờ vào tính ổn định và tính năng hướng đối tượng.
Hạn chế của Java
● Hiệu năng thấp hơn ngôn ngữ Native: So với ngôn ngữ Native như C++ hay Kotlin (trong lập trình Android), Java thường có hiệu năng thấp hơn do phải chạy trên JVM.
● Tiêu tốn bộ nhớ: Các ứng dụng viết bằng Java có xu hướng tiêu tốn bộ nhớ nhiều hơn do tính năng quản lý bộ nhớ tự động (Garbage Collector).
● Hạn chế trong lập trình giao diện người dùng (UI): Java không phải là ngôn ngữ tối ưu để xây dựng giao diện phức tạp hoặc mượt mà Ngôn ngữ này có thể thiếu tính linh hoạt khi thiết kế UI, đặc biệt trên các nền tảng mobile.
Ứng dụng của Java trong phát triển mobile
● Lập trình Android: Java từng là ngôn ngữ chính trong phát triển ứng dụng Android, và mặc dù Google đã giới thiệu Kotlin làm ngôn ngữ ưu tiên cho Android, Java vẫn được sử dụng rộng rãi Một lượng lớn các thư viện và framework Android được phát triển trên nền Java, và JVM giúp ứng dụng Android viết bằng Java có thể tận dụng tài nguyên hệ thống một cách hiệu quả.
● Ứng dụng backend: Với các framework mạnh mẽ như Spring Boot, Java có thể được dùng để xây dựng backend cho các ứng dụng mobile, tạo API cho phép ứng dụng di động kết nối và trao đổi dữ liệu với server.
● Ứng dụng doanh nghiệp và phần mềm lớn: Ngoài mobile, Java còn là ngôn ngữ chính trong phát triển các hệ thống quản lý lớn, ERP, và các ứng dụng doanh nghiệp do tính ổn định, bảo mật và khả năng mở rộng của nó.
So sánh với Kotlin
● Cú pháp: Kotlin có cú pháp đơn giản hơn Java, với khả năng giảm thiểu mã lặp và hỗ trợ nhiều tính năng hiện đại như extension functions và null safety, giúp tránh lỗi null pointer.
● Tích hợp với Android: Kotlin có khả năng tích hợp tốt hơn trong lập trình Android, hỗ trợ các API và tính năng đặc thù của Android tốt hơn Java.
● Hiệu năng: Kotlin có hiệu năng ngang ngửa hoặc nhỉnh hơn Java trong một số trường hợp vì các tính năng tối ưu hóa mà nó mang lại.
Kết luận
Java vẫn là một ngôn ngữ mạnh mẽ và ổn định, phù hợp cho các ứng dụng cần tính bảo mật, hiệu năng ổn định và dễ bảo trì Trong phát triển ứng dụngAndroid, dù Kotlin đang ngày càng được ưa chuộng, Java vẫn đóng vai trò quan trọng nhờ vào sự phổ biến và hệ sinh thái rộng lớn.
CÀI ĐẶT ỨNG DỤNG VÀ XÂY DỰNG GIAO DIỆN 10 3.1 Cài đặt ứng dụng Android Studio
Tải về Android studio
Vào đường dẫn sau để tải Android studio https://developer.android.com/studio
Sau đó click vào Download
Sau khi tải về ta có tệp tin
Trước khi cài Android Studio ta phải đảm bảo rằng máy tính của bạn đã cài đặt Java JDK
⇨ Chọn Don’t send rồi nhấn Next
⇨ Chọn Standard Đường dẫn chứa thư mục SDK phải không được chứa dấu cách hay ký tự đặc biệt Nếu có tên thư mục nào vi phạm điều trên thì phải chọn đường dẫn mới để chứa thư mục SDK.
⇨ Chọn lần lượt các mục bên trái => chọn Accept rồi Finish
Cài máy ảo trong Android Studio
Sau khi cài đặt xong Android được khởi chạy.
Nhấn nút Device Manage ở góc trên bên phải của cửa sổ Android để mở cửa sổ quản lý máy ảo như sau:
Nhấn nút Create device để cài đặt máy ảo, xuất hiện cửa sổ sau:
Chọn loại máy ảo cần cài đặt rồi nhấn Next Sau đó chọn tên máy ảo cần cài đặt.
(Lưu ý: Những máy có mũi tên bên cạnh thì ta nhấn vào mũi tên để tải máy xuống rồi mới nhấn Next được Khi cài đặt máy ảo thì lưu ý phiên bản của hđh Android) Nhấn Next rồi nhấn Finish ở cửa sổ kế tiếp và chờ quá trình cài đặt (có thể mất vài phút hoặc hơn tùy theo tốc độ đường truyền mạng)
Sau khi cài đặt máy ảo thành công thì tên máy ảo sẽ xuất hiện ở thanh công cụ trong cửa sổ Android.
Xây dựng giao diện app
3.2.1 Xây dựng csdl với PHPMyadmin
● Chạy xampp (nếu phải thay đổi cổng thì thay đổi config = > Service and Port Settings => tại Main Port thay đổi cổng từ 80 -> 88 => Save).
● Tạo cơ sở dữ liệu:
Bảng dssanpham (tensp,hangsx,namsx,hinh)
● Copy file getdata_xe.php dán vào thư mục C:\xampp\htdocs\android\ getdata_sanpham.php
$connect=mysqli_connect("localhost","root","","qlybanhang"); mysqli_query($connect,"SET NAMES 'utf8'"); class Sanpham
{ function Sanpham($tensp,$hangsx,$namsx,$mota,$hinh)
$data=mysqli_query($connect,$query); while ($row=mysqli_fetch_assoc($data))
⇨ Chạy thử file getdata_sanpham.php lên trình duyệt
Lấy địa chỉ ip (cmd=>ipconfig) của máy mình đang ngồi, thay vào chữ local host, nếu vẫn get được data=> thì OK
3.2.2 Xây dựng app với Android Studio
Mở Android Studio => New Project => New Empty Views Activity => Đặt tên và tạo Project là qlybanhang Tiếp theo tạo các trang để code và các layout để thiết kế giao diện
+) activity_main.xml: Đưa vào Listview (Đặt ID và ràng buộc)
+) Class user: Gồm các thuộc tính(id, email, tài khoản, mật khẩu), có hàm tạo (constructor), có phương thức getter() và setter
+) Tạo activity Dangky: Đại diện cho chức năng đăng ký người dùng mới. Lớp này thường chứa các thông tin người dùng cần nhập khi tạo tài khoản mới, chẳng hạn như Email, tài khoản, mật khẩu Có hàm tạo (constructor), có phương thức getter() và setter.
+) Layout activity_dang_ky.xml : Đưa vào 5 editText, 1 textView và 1Button.
+) Tạo activity Dangnhap: đại diện cho chức năng đăng nhập của người dùng. Lớp này có thể chỉ cần chứa thông tin cơ bản như tài khoản và mật khẩu Có hàm tạo (constructor), có phương thức getter() và setter.
+) Layout activity_dang_nhap.xml : Đưa vào 2 editText và 1 textView, 1 Button
+) Class databaseUser: Được sử dụng để kết nối và thao tác với cơ sở dữ liệu liên quan đến thông tin người dùng, chẳng hạn như đăng ký, đăng nhập, lấy thông tin người dùng.
+) Class Sanpham: Gồm các thuộc tính tương ứng như trong bảng, có hàm tạo
(constructor), có phương thức getter() và setter cho class này. package com.example.qlybanhang.Activity; public class Sanpham {
String hinh; public Sanpham(String tensp, String hangsx, int namsx, String mota, String hinh) { this.tensp = tensp; this.hangsx = hangsx; this.namsx = namsx; this.mota = mota; this.hinh = hinh;
} public String getTensp() { return tensp;
} public void setTensp(String tensp) { this.tensp = tensp;
} public String getHangsx() { return hangsx;
} public void setHangsx(String hangsx) { this.hangsx = hangsx;
} public int getNamsx() { return namsx;
} public void setNamsx(int namsx) { this.namsx = namsx;
} public String getMota() { return mota;
} public void setMota(String mota) { this.mota = mota;
} public String getHinh() { return hinh;
} public void setHinh(String hinh) { this.hinh = hinh;
- extends BaseAdapter=> Alt Enter => Implement methods getCount(); getItem(); getItemID(); getView()
- Khai báo các thuộc tính
⇨ Nhấn phải chuột=> generate=> constructor
⇨ Nhấn phải chuột=> generate=> getter() and setter()
+) Tạo Layout dongsp.xml res-> layout-> new -> layout resource file => đặt tên là dongsp.xml
Cứ tạo constraint layout theo mặc định=> vào code của file xml=> sửa thành Relative layout) Rồi mới đưa đối tượng vào Đối với Relative layout=> Theo mặc đinh: Đối tượng vừa kéo vào => nằm ở góc trên bên trái Đưa vào 1 imageViewHinh, 3 textView( textViewtensp, textViewHangsx,textViewNamsx)
⇨ Xong giao diện dòng và code dongsp.xml thì quay lại sửa nốt Adapter. package com.example.qlybanhang.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.qlybanhang.R; import java.util.List; public class SanphamAdapter extends BaseAdapter {
List mangsp; public SanphamAdapter(Context mycontext, int mylayout, List mangsp) { this.mycontext = mycontext; this.mylayout = mylayout; this.mangsp = mangsp;
} public Context getMycontext() { return mycontext;
} public void setMycontext(Context mycontext) { this.mycontext = mycontext;
} public int getMylayout() { return mylayout;
} public void setMylayout(int mylayout) { this.mylayout = mylayout;
} public List getMangsp() { return mangsp;
} public void setMangsp(List mangsp) { this.mangsp = mangsp;
@Override public int getCount() { return mangsp.size();
@Override public Object getItem(int position) { return null;
@Override public long getItemId(int position) { return 0;
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView==null){ viewHolder=new ViewHolder();
LayoutInflater inflater=(LayoutInflater) mycontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView=inflater.inflate(mylayout,null); viewHolder.txtvTensp=(TextView)convertView.findViewById(R.id.textViewTensp) viewHolder.txtvHangsx=(TextView)convertView.findViewById(R.id.textViewHangs x); viewHolder.txtvNamsx=(TextView)convertView.findViewById(R.id.textViewNamsx)
; viewHolder.imgHinh=(ImageView) convertView.findViewById(R.id.imageViewHinh); convertView.setTag(viewHolder);
}else { viewHolder=(ViewHolder) convertView.getTag(); }
Sanpham sanpham=mangsp.get(position); viewHolder.txtvTensp.setText(sanpham.getTensp()); viewHolder.txtvHangsx.setText(sanpham.getHangsx()); viewHolder.txtvNamsx.setText(String.valueOf(sanpham.getNamsx()));
Context context = viewHolder.imgHinh.getContext(); int id = context.getResources().getIdentifier(sanpham.getHinh(),
"drawable", context.getPackageName()); viewHolder.imgHinh.setImageResource(id); return convertView;
+) Implement thư viện Volley vào file gradle (module) implementation ("com.android.volley:volley:1.2.1") vào file gradles (modul)
- Khai báo biến (Biến listview; biến SanphamAdapter; biến mangsp;)
- Kết nối Adapter với listview
Activity -> Emty Views Activity -> Đặt tên là
+) Tiếp tục thiết kế cho Layout activity_main2:
+) Trở lại code tiếp cho trang MainActivity2: package com.example.qlybanhang.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import com.example.qlybanhang.R; public class MainActivity2 extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
EdgeToEdge.enable(this); setContentView(R.layout.activity_main2); button = (Button) findViewById(R.id.button); textView3 = (TextView) findViewById(R.id.textView3); textView5 = (TextView) findViewById(R.id.textView5); textView7 = (TextView) findViewById(R.id.textView7); imageView3 = (ImageView) findViewById(R.id.imageView3);
Intent intent = getIntent(); button.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
Intent mh1 = new Intent(MainActivity2.this,
Bundle bundle = intent.getExtras(); if (bundle != null) {
String tensp = bundle.getString("Key_1");
String hangsx = bundle.getString("Key_2");
String mota = bundle.getString("Key_5");
String hinh = bundle.getString("Key_4"); textView3.setText(String.valueOf(tensp)); textView5.setText(hangsx); textView7.setText(mota); img = getResources().getIdentifier(hinh, "drawable", getPackageName()); imageView3.setImageResource(img);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets;
+) Sau khi code xong trang MainActivity2 thì tiếp tục trở lại sửa ở trang MainActivity.
ArrayList mangsp; int vt=0;
● Thêm code chuyển màn hình
DEMO APP BÁN HÀNG MỸ PHẨM 26
Giao diện trang đăng ký
1 Trường Nhập Liệu: o Name: Người dùng nhập tên của mình. o Email: Người dùng nhập địa chỉ email. o Password: Người dùng nhập mật khẩu để bảo mật tài khoản.
2 Nút Đăng Ký: o Khi người dùng nhập đầy đủ thông tin vào các trường trên, họ có thể nhấn vào nút hình mũi tên (ở góc dưới bên phải) để gửi yêu cầu đăng ký tài khoản. o Nút này sẽ kiểm tra tính hợp lệ của các thông tin nhập vào trước khi hoàn tất việc đăng ký.
3 Liên kết Đăng Nhập: o Dưới các trường nhập liệu, có một liên kết với dòng chữ "Bạn đã có tài khoản? Đăng nhập". o Khi nhấn vào liên kết này, người dùng sẽ được chuyển đến giao diện đăng nhập nếu đã có tài khoản.
Chức năng chính của màn hình đăng ký:
● Thu thập thông tin tài khoản: Hỗ trợ người dùng tạo tài khoản mới bằng cách nhập các thông tin cần thiết (Tên, Email, Mật khẩu).
● Kiểm tra thông tin nhập vào: Giao diện có thể tích hợp các tính năng kiểm tra thông tin như định dạng email, độ dài mật khẩu, để đảm bảo thông tin hợp lệ.
● Điều hướng sang màn hình đăng nhập: Giúp người dùng dễ dàng chuyển sang giao diện đăng nhập nếu đã có tài khoản.
Giao diện trang đăng nhập
1 Trường Nhập Liệu: o Name: Người dùng nhập tên tài khoản hoặc username của mình. o Password: Người dùng nhập mật khẩu đã đăng ký.
2 Nút Đăng Nhập: o Nút hình mũi tên (ở góc dưới bên phải) sẽ xử lý thao tác đăng nhập khi người dùng đã nhập đầy đủ thông tin. o Nút này có thể được tích hợp chức năng kiểm tra thông tin đăng nhập, để xác thực tài khoản và mật khẩu có đúng không.
3 Liên kết Đăng Ký: o Dưới các trường nhập liệu, có một liên kết với dòng chữ "Bạn chưa có tài khoản? Đăng ký". o Khi nhấn vào liên kết này, người dùng sẽ được chuyển đến giao diện đăng ký để tạo tài khoản mới nếu chưa có tài khoản.
Chức năng chính của màn hình đăng nhập:
● Xác thực tài khoản: Hỗ trợ người dùng đăng nhập vào ứng dụng bằng cách nhập thông tin tài khoản đã đăng ký.
● Kiểm tra thông tin đăng nhập: Giao diện có thể tích hợp tính năng kiểm tra tính hợp lệ của thông tin (ví dụ: kiểm tra tài khoản có tồn tại, mật khẩu có đúng không).
● Điều hướng sang màn hình đăng ký: Giúp người dùng dễ dàng chuyển sang giao diện đăng ký nếu chưa có tài khoản.