【问题标题】:How to display parameters of an arraylist into a listview如何将数组列表的参数显示到列表视图中
【发布时间】:2011-11-30 11:06:32
【问题描述】:

如何将arraylist的参数显示到listview中

我有一个显示在列表视图中的数组列表。现在它可以工作,但它显示了某种随机数组 id 看起来的名称,这就是为什么我希望它使用类的参数名称,它是一个字符串产品名称。

这是包含我想在列表中显示的产品名称的 getters 和 setters 文件

打包kfc.project;

公共类产品{

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;
}

}

这是我添加产品的产品列表

 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;
    }

}

最后,这是我显示列表的地方

    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"
    };



}

【问题讨论】:

    标签: android eclipse android-intent


    【解决方案1】:

    只需在 productDetail Activity 调用属于Activity 类的getIntent() 方法,您将获得启动此活动的意图。然后你可以从中提取数据。

    例如。

    Intent intent = getIntent();
    String str = intent.getExtra("name");  
    

    然后您可以将此文本设置为任何TextView

    【讨论】:

    • 你能编辑我的代码并将它放在需要放置的地方吗?因为我收到错误
    • 哦,现在可以完美运行了。因此,在 xml 代码中,例如使用字符串 str 将其放入 settext 中
    • 只需在 textView 的对象上调用 setText() 方法。与xml无关。 text.setText(str);
    • 我有一个新问题,请帮助我
    【解决方案2】:

    您可以使用 getIntent 和 getExtras。这可能会帮助你。 P.S - 空检查对于避免null pointer exception 非常有用。

    Bundle extras = intent.getExtras();
    textView.setText(extras != null ? extras.getString("value"));
    

    【讨论】:

    • 我可以用什么表达式来完成参数,因为我得到了一行错误
    • 它只是字符串,您可以将extras.getString("value"); 用于字符串并使用textView.setText(thatString);
    • 我有一个新问题,请帮助我
    • 您的问题是什么,在哪里?
    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多