A collection of 5 Android applications — Personal Card, Hafez Fal, Book Reader, Currency Exchange, and Weather Forecast developed using Kotlin as part of the Mobile Programming course. Each project demonstrates progressive skill development in Android development, from basic UI layouts to advanced features like API integration and MVVM architecture.
Key Features:
- Native Android development with Kotlin
- Material Design implementation
- RESTful API integration (Retrofit)
- RecyclerView and custom adapters
- MVVM architecture pattern
- Responsive UI/UX design
Description: A digital business card application displaying personal information with a clean, professional layout.
Features:
- Custom UI layout with personal photo
- Material Design components
- Profile information display
Key Concepts:
- XML layouts
- ImageView and TextViews
- Basic Android UI components
📁 Path: 1- Personal Card/Personal_card/
Description: Traditional Persian fortune-telling app using Hafez poetry (Fal-e Hafez).
Features:
- Random poem selection
- Persian text display
- Custom splash screen
- Information page about Hafez
Key Concepts:
- Multiple activities
- Intent navigation
- String resources (Persian language)
- Random data generation
📁 Path: 2- Hafez Fal/Hafez_Fal/
📦 APK: Available in project folder
Description: A book catalog application with grid/list view toggle and detailed book information.
Features:
- RecyclerView with custom adapter
- Grid and List layout switching
- Book detail activity
- Custom card layouts
- Hardcoded book database
Key Concepts:
- RecyclerView implementation
- ViewHolder pattern
- Intent data passing
- Menu items (layout switcher)
- Data classes (Book model)
- Multiple activities
Sample Books:
- Deep Work
- No Excuses
- The Alchemist
- The Zahir
- Parallel Worlds
📁 Path: 3- Book Reader/hw3/
📦 APK: app-debug.apk
Description: Real-time currency exchange rate application.
Features:
- Currency conversion calculator
- Exchange rate display
- Clean, intuitive UI
- MVVM architecture pattern
Key Concepts:
- ViewModel implementation
- LiveData
- Data binding
- MVVM pattern
- ExchangeViewModel class
📁 Path: 4- Currency Exchange/HW4/
📦 APK: app-debug.apk
Description: Weather forecast application with city search and 5-day forecast display.
Features:
- City search with autocomplete
- 5-day weather forecast
- Weather icons and conditions
- Temperature display
- API integration (OpenWeatherMap)
Key Concepts:
- Retrofit HTTP client
- RESTful API integration
- JSON parsing (data classes)
- RecyclerView with weather cards
- Dropdown (AutoCompleteTextView)
- Network permissions
- Multiple data classes for API response
Components:
ApiInterface.kt- API endpointsRetrofitClient.kt- Network clientWeatherItemAdapter.kt- RecyclerView adapter- Multiple data classes for JSON mapping
📁 Path: 5- Weather Forecast/HW5/
📦 APK: app-debug.apk
🎥 Demo Video: record screen.webm
| Category | Technologies |
|---|---|
| Language | Kotlin |
| Platform | Android SDK 33+ |
| Architecture | MVVM (Projects 4-5) |
| UI | Material Design, XML Layouts |
| Networking | Retrofit, OkHttp |
| Data | LiveData, ViewModel |
| Views | RecyclerView, CardView |
| Build Tool | Gradle |
- Android Studio Arctic Fox or later
- JDK 11+
- Android SDK 33+
- Gradle 7.0+
# Clone the repository
git clone https://github.com/zamirmehdi/Mobile-Programming-Course.git
cd Mobile-Programming-Course
# Open individual projects in Android Studio
# Navigate to project folder (e.g., "3- Book Reader/hw3/")
# Open in Android Studio and sync Gradle- Open Android Studio
- Select File → Open
- Navigate to desired project folder (e.g.,
3- Book Reader/hw3/) - Wait for Gradle sync to complete
- Click Run or press
Shift + F10
Pre-built APK files are available in some project folders:
- Hafez Fal:
HafezFal.apk - Book Reader:
app-debug.apk - Currency Exchange:
app-debug.apk - Weather Forecast:
app-debug.apk
Installation:
adb install path/to/app-debug.apk-
Android Fundamentals
- Activity lifecycle
- Intent navigation
- XML layout design
- Resource management
-
UI/UX Development
- Material Design principles
- RecyclerView implementation
- Custom adapters
- Responsive layouts
- Grid and List views
-
Architecture Patterns
- MVVM architecture
- ViewModel and LiveData
- Data binding
- Separation of concerns
-
Networking
- RESTful API integration
- Retrofit configuration
- JSON parsing
- HTTP requests
-
Kotlin Programming
- Data classes
- Extension functions
- Lambda expressions
- Null safety
-
Best Practices
- Code organization
- Resource separation
- ProGuard configuration
- Testing structure
Author: Amirmehdi Zarrinnezhad
Course: Mobile Programming
University: Amirkabir University of Technology (Tehran Polytechnic) - Fall 2022
Repository: zamirmehdi/Mobile-Programming-Course
Questions or collaborations? Feel free to reach out!
📧 Email: amzarrinnezhad@gmail.com
🌐 GitHub: @zamirmehdi
⭐ If you found this project helpful, please consider giving it a star! ⭐
Amirmehdi Zarrinnezhad























