In: Computer Science
android studio
Begin a new app and create a Java class for products with data: productName, productCode and price and use a file of objects to store product data and read back and display on screen. Do this by creating a simple form using EditTexts, buttons or ActionBar items and display output using an Alert.
<!— activity_main.xml -->
<?xml version="1.0"
encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <RelativeLayout
       
android:id="@+id/inputView"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="30dp">
        <TextView
           
android:id="@+id/nameView"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:text="Product Name : "
           
android:textSize="20sp"
           
android:layout_margin="10dp"
           
android:textColor="#000000"
        />
        <EditText
           
android:id="@+id/nameTxt"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
        
   android:layout_below="@id/nameView"
           
android:textSize="20sp"
           
android:textColor="#000000"
           
/>
        <TextView
           
android:id="@+id/codeView"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:layout_below="@id/nameTxt"
           
android:text="Product Code : "
           
android:textSize="20sp"
           
android:layout_margin="10dp"
           
android:textColor="#000000"
           
/>
        <EditText
           
android:id="@+id/codeTxt"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:layout_below="@id/codeView"
           
android:textSize="20sp"
           
android:textColor="#000000"
           
/>
        <TextView
           
android:id="@+id/priceView"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:text="Product Price : "
           
android:layout_below="@id/codeTxt"
           
android:textSize="20sp"
           
android:layout_margin="10dp"
           
android:textColor="#000000"
           
/>
        <EditText
           
android:id="@+id/priceTxt"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:layout_below="@id/priceView"
           
android:textSize="20sp"
           
android:textColor="#000000"
           
android:inputType="numberDecimal"
           
/>
        <Button
           
android:id="@+id/submit"
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:layout_below="@id/priceTxt"
           
android:text="Submit"
           
android:layout_marginTop="20dp"
           
android:layout_marginLeft="50dp"
           
android:textSize="20sp"/>
        <Button
           
android:id="@+id/show"
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
       
    android:layout_below="@id/priceTxt"
           
android:layout_toRightOf="@id/submit"
           
android:layout_marginTop="20dp"
           
android:layout_marginLeft="20dp"
           
android:text="Show Products"
           
android:textSize="20sp"
           
/>
    </RelativeLayout>
</RelativeLayout>
<!—end of activity_main.xml -->
//MainActivity.java
package com.example.productdetails;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import mysimpleapps.com.productdetails.models.Product;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    EditText nameTxt, codeTxt, priceTxt;
    Button submit, show;
    FileWriter outFile = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        nameTxt = findViewById(R.id.nameTxt);
        codeTxt = findViewById(R.id.codeTxt);
        priceTxt = findViewById(R.id.priceTxt);
        submit = findViewById(R.id.submit);
        show = findViewById(R.id.show);
        submit.setOnClickListener(this);
        show.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if(v == submit)
        {
            File file = new File(this.getFilesDir(),"products.txt");
            try {
                outFile = new FileWriter(file, true);
            } catch (IOException e) {
                Toast.makeText(getApplicationContext(),"File cannot be created or opened",Toast.LENGTH_SHORT).show();
            }
            if(nameTxt.getText().length() > 0 && codeTxt.getText().length() > 0 && priceTxt.getText().length() > 0)
            {
                Product product = new Product(nameTxt.getText().toString(),codeTxt.getText().toString(),Double.parseDouble(priceTxt.getText().toString()
                ));
                try {
                    outFile.write(product.getName()+","+product.getCode()+","+product.getPrice()+"\n");
                    Toast.makeText(getApplicationContext(),"Product data added to file",Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(),"Product data cannot be stored",Toast.LENGTH_SHORT).show();
                }
            }else
                Toast.makeText(getApplicationContext(),"Please enter all the details for the product",Toast.LENGTH_SHORT).show();
        }else if(v == show)
        {
            try {
                if(outFile != null)
                    outFile.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            ArrayList<Product> products = new ArrayList<>();
            File file = new File(this.getFilesDir(),"products.txt");
            try {
                Scanner reader = new Scanner(file);
                while(reader.hasNextLine())
                {
                    String line = reader.nextLine();
                    if(line.length() > 0)
                    {
                        Product product = new Product();
                        int index = line.indexOf(",");
                        product.setName(line.substring(0,index));
                        index = line.indexOf(",",index+1);
                        product.setCode(line.substring(line.indexOf(",")+1,index));
                        product.setPrice(Double.parseDouble(line.substring(index+1)));
                        products.add(product);
                    }
                }
                reader.close();
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                if(products.size() > 0)
                {
                    String alertMessage = "";
                    for(int i=0;i<products.size()-1;i++)
                    {
                        alertMessage += products.get(i).toString()+"\n";
                    }
                    alertMessage += products.get(products.size()-1).toString();
                    alert.setMessage(alertMessage)
                            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    dialog.cancel();
                                }
                            });
                    alert.show();
                }else
                    Toast.makeText(getApplicationContext(),"Add some products first",Toast.LENGTH_SHORT).show();
            } catch (FileNotFoundException e) {
                Toast.makeText(getApplicationContext(),"File products.txt doesn't exist",Toast.LENGTH_SHORT).show();
            }
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        try {
            if(outFile != null)
                outFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
//end of MainActivity.java
Output:

