在自定义ListView中添加一行并从intent.putExtra()获取数据

时间:2014-03-12 11:20:05

标签: android android-listview

我有一个第一次为空的自定义listView,从另一方面我有一个活动,其中包含产品详细信息,如图片,标题,型号。在此活动中有一个button ,所以当用户按下此按钮时,我想将产品添加到我的自定义listView中,并在那里显示所有产品详细信息,

我的listView是:

public class ListViewShoppingBasketActivity extends Activity {
BaseAdapter adapter;

ArrayList<SingleRow> list;
Context context;
String[] titles;
Bitmap[] images;
String[] descriptions;

TextView title;
TextView description;
ImageView image;

String rowTitles;
String rowDescription;
Bitmap rowImage;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_view_shopping_basket_layout);

    final ListView list = (ListView) findViewById(R.id.listView1);
    list.setAdapter(new MyAdapter(this));

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> a, View v, int position,
                long id) {

            if (id == 0) {
            } else if (id == 1) {

            } else if (id == 2) {

            } else if (id == 3) {

            } else if (id == 4) {

            }

        }
    });

}



class SingleRow {
    String rowTitles;
    String rowDescription;
    Bitmap rowImage;

    public SingleRow(String rowTitles, String rowDescription, Bitmap rowImage) {
        this.rowTitles = rowTitles;
        this.rowDescription = rowDescription;
        this.rowImage = rowImage;
    }

}

class MyAdapter extends BaseAdapter {

    public MyAdapter(Context c) {
        context = c;
        list = new ArrayList<SingleRow>();



    }

    @Override
    public int getCount() {

        return list.size();
    }

    @Override
    public Object getItem(int i) {

        return list.get(i);
    }

    @Override
    public long getItemId(int i) {

        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.shopping_basket_listview_row,
                viewGroup, false);

        title = (TextView) row.findViewById(R.id.textView1);
        description = (TextView) row.findViewById(R.id.textView2);
        image = (ImageView) row.findViewById(R.id.imageView1);

        SingleRow temp = list.get(i);

        title.setText(temp.rowTitles);
        description.setText(temp.rowDescription);
        image.setImageBitmap(temp.rowImage);

        return row;
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.list_view_shopping_basket, menu);
    return true;
}

// // **********baraye add kardane item jadid be listview
public void addItems(View v) {
    list.add(new SingleRow(rowTitles, rowDescription, rowImage));
    adapter.notifyDataSetChanged();
}


    }

这是我在其他活动中button的实施

        b_add_to_cart = (Button) findViewById(R.id.b_add_to_cart);
    b_add_to_cart.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(BarcodeDetailsActivity.this,
                    ListViewShoppingBasketActivity.class);
            intent.putExtra("productID", proId);
            intent.putExtra("productModel", proModel);
            intent.putExtra("productTitle", proTitle);
            intent.putExtra("productPictureUrl", mIcon11);

            startActivity(intent);

        }
    });

我的问题是,我不知道如何以及在哪里可以在我的列表视图中分配我的产品详细信息

1 个答案:

答案 0 :(得分:0)

您可以将下一行放入ListViewShoppingBasketActivity的代码:

Intent i = getIntent();
if (i.getExtras() != null){
    int prodId = i.getExtras().getInt("productID");
    ....
}

您可以将theese放入ArrayList,并使用BaseAdapter(http://developer.android.com/reference/android/widget/BaseAdapter.html)显示列表中的数据。