How to display parameters of an arraylist into a listview
I have this array list that is displayed in a listview. right now it works but it shows somekind of random array id looking names thats why i wanted it to use the parameter name of the class which is a string product name.
This is the getters and setters file which includes the product name i want to show for the list
package kfc.project;
public class Product {
String name;
int servingSize;
int calories;
int fat;
int saturatedFat;
int transFat;
int cholesterol;
int sodium;
int carbs;
int fiber;
int sugar;
int protein;
int vitamina;
int vitaminc;
int calcium;
int iron;
public Product (String name, int servingSize, int calories, int fat, int saturatedFat, int transFat, int cholesterol, int sodium, int carbs, int fiber, int sugar, int protein, int vitamina, int vitaminc, int calcium, int iron){
this.name=name;
this.calories=calories;
this.servingSize=servingSize;
this.fat=fat;
this.saturatedFat=saturatedFat;
this.transFat=transFat;
this.cholesterol=cholesterol;
this.fiber=fiber;
this.sugar=sugar;
this.sodium=sodium;
this.carbs=carbs;
this.protein=protein;
this.vitamina=vitamina;
this.vitaminc=vitaminc;
this.calcium=calcium;
this.iron=iron;
}
public Product (String name, int servingSize){
this.name=name;
this.servingSize=servingSize;
}
public String getName() {
return name;
}
public int getServingSize() {
return servingSize;
}
public int getCalories() {
return calories;
}
public int getFat() {
return fat;
}
public int getSaturatedFat() {
return saturatedFat;
}
public int getTransFat() {
return transFat;
}
public int getCholesterol() {
return cholesterol;
}
public int getSodium() {
return sodium;
}
public int getCarbs() {
return carbs;
}
public int getProtein() {
return protein;
}
public int getFiber(){
return fiber;
}
public int getSugar(){
return sugar;
}
public int getVitaminA(){
return vitamina;
}
public int getVitaminC(){
return vitaminc;
}
public int getCalcium(){
return calcium;
}
public int getIron(){
return iron;
}
}
This is the product list on where i add the products
package kfc.project;
import java.util.ArrayList;
public class ProductList {
ArrayList<Product> list;
public ProductList (){
list = new ArrayList<Product>();
//CREATE PRODUCT HERE
Product chicken;
list.add(new Product("Chicken", 10, 20, 30, 40, 50, 60, 70, 80, 90, 80,70,60,50,40,30));
Product rice;
list.add(new Product("Rice",11));
}
public String[] getNames (){
int c = 0;
int size = list.size() - 1;
String[] names = new String[size];
while (size >= c) {
//names.add(list.get(c).getName());
names[c] = list.get(c).getName();
c++;
}
c = 0;
return names;
}
public ArrayList<Product> getList (){
return list;
}
}
Finally, this is where i display the list
package kfc.project;
import java.util.ArrayList;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
public class ProductListView extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ProductList pl = new ProductList();
//setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, PRODUCTS));
setListAdapter(new ArrayAdapter<Product>(this, R.layout.list_item, pl.getList() ));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), "View Product", Toast.LENGTH_SHORT).show();
Product product = pl.getList().get(position);
// intent stuff for product detail
Intent intent = new Intent(ProductListView.this, productdetail.class);
intent.putExtra("name",product.getName());
intent.putExtra("serving size", product.getServingSize());
intent.putExtra("calories", product.getCalories());
intent.putExtra("fat", product.getFat());
intent.putExtra("saturated fat", product.getSaturatedFat());
intent.putExtra("trans fat", product.getTransFat());
intent.putExtra("cholesterol", product.getCholesterol());
intent.putExtra("sodium", product.getSodium());
intent.putExtra("carbs", product.getCarbs());
intent.putExtra("fiber", product.getFiber());
intent.putExtra("sugar", product.getSugar());
intent.putExtra("protein", product.getProtein());
intent.putExtra("vitamina", product.getVitaminA());
intent.putExtra("vitaminc", product.getVitaminC());
intent.putExtra("calcium", product.getCalcium());
intent.putExtra("iron", product.getIron());
ProductListView.this.startActivity(intent);
//startActivity(new Intent("kfc.project.productdetail"));
}
});
}
//TEST STRING ARRAY
static String[] PRODUCTS = new String[] {
"Chicken", "Rice", "Coke", "Chicken Burger"
};
}
Simply in productDetail
ActivitycallgetIntent()method which belongs toActivityclass, you will get intent from which this activity has beed started. and then you can extract data from it.ex.
you can then set this text to any
TextView.