Untitled
unknown
plain_text
5 months ago
8.5 kB
4
Indexable
package com.example.proba2; public class Expense { private String description; private float amount; private String category; public Expense(String description, float amount, String category) { this.description = description; this.amount = amount; this.category = category; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public float getAmount() { return amount; } public void setAmount(float amount) { this.amount = amount; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } } package com.example.proba2; import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.ArrayList; import java.util.List; public class ExpenseAdapter extends ArrayAdapter<Expense> { private Context context; private ArrayList<Expense> expenseList; public ExpenseAdapter(@NonNull Context context, ArrayList<Expense> expenses) { super(context, R.layout.expense_item, expenses); this.expenseList = expenses; this.context = context; } @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View rowView = LayoutInflater.from(context).inflate(R.layout.expense_item, parent, false); Expense expense = expenseList.get(position); TextView descriptionView = rowView.findViewById(R.id.description); TextView amountView = rowView.findViewById(R.id.amount); TextView categoryView = rowView.findViewById(R.id.category); descriptionView.setText(expense.getDescription()); amountView.setText(String.valueOf(expense.getAmount())); categoryView.setText(expense.getCategory()); return rowView; } } package com.example.proba2; import android.content.Intent; import android.os.Bundle; 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; public class ExpenseDetailsActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_expense_details); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.cardView), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); TextView descriptionText=findViewById(R.id.expenseDescription); TextView amountText=findViewById(R.id.expenseAmount); TextView categoryText=findViewById(R.id.expenseCategory); Intent intent=getIntent(); if (intent!=null){ String description=intent.getStringExtra("description"); Float amount=intent.getFloatExtra("amount",0); String category=intent.getStringExtra("category"); descriptionText.setText(description); amountText.setText(String.valueOf(amount)); categoryText.setText(category); } } }package com.example.proba2; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ListView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private SharedPreferences sharedPreferences; private ArrayList<Expense> expenseList; private ExpenseAdapter expenseAdapter; private TextView totalPriceText; private ListView list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.cardView), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); list = findViewById(R.id.list); totalPriceText = findViewById(R.id.total); expenseList = new ArrayList<>(); expenseAdapter = new ExpenseAdapter(this, expenseList); sharedPreferences = getSharedPreferences("PREFS_NAME", MODE_PRIVATE); list.setAdapter(expenseAdapter); loadExpense(); if (expenseList.isEmpty()) { expenseDefault(); saveExpense(); } totalPrice(); // Listaelemre kattintás list.setOnItemClickListener((parent, view, position, id) -> { Expense selectedExpense = expenseList.get(position); Intent intent = new Intent(MainActivity.this, ExpenseDetailsActivity.class); intent.putExtra("description", selectedExpense.getDescription()); intent.putExtra("amount", selectedExpense.getAmount()); intent.putExtra("category", selectedExpense.getCategory()); startActivity(intent); }); } private void expenseDefault() { expenseList.add(new Expense("Groceries", 532.25f, "Food")); expenseList.add(new Expense("Fuel", 132.25f, "Transport")); expenseList.add(new Expense("Rent", 232.25f, "Housing")); expenseList.add(new Expense("Electricity", 432.25f, "Utilities")); } private void saveExpense() { SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear(); for (int i = 0; i < expenseList.size(); i++) { editor.putString("description_" + i, expenseList.get(i).getDescription()); editor.putFloat("amount_" + i, expenseList.get(i).getAmount()); editor.putString("category_" + i, expenseList.get(i).getCategory()); } editor.apply(); } private void loadExpense() { expenseList.clear(); int i = 0; while (sharedPreferences.contains("description_" + i)) { String description = sharedPreferences.getString("description_" + i, ""); float amount = sharedPreferences.getFloat("amount_" + i, 0); String category = sharedPreferences.getString("category_" + i, ""); expenseList.add(new Expense(description, amount, category)); i++; } expenseAdapter.notifyDataSetChanged(); } private void totalPrice() { float result = 0; for (Expense expense : expenseList) { result += expense.getAmount(); } totalPriceText.setText(String.valueOf(result)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); if (id == R.id.add) { expenseList.add(new Expense("Random", 1, "Misc")); saveExpense(); totalPrice(); expenseAdapter.notifyDataSetChanged(); return true; } else if (id == R.id.delete) { expenseList.clear(); saveExpense(); totalPrice(); expenseAdapter.notifyDataSetChanged(); return true; } return super.onOptionsItemSelected(item); } }
Editor is loading...
Leave a Comment