Untitled

 avatar
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