为什么要实现Parcelable?
他将String[]传递给适配器,因此:
- 在位置处获取item(String)
- 创建intent
- 将其作为额外内容放入intent中
- 启动activity
- 在activity中获取额外内容
要存储产品列表,您可以在此处使用HashMap(例如作为静态对象)。
描述产品的示例类:
public class Product {
private String _name;
private String _description;
private int _id
public Product(String name, String description,int id) {
_name = name;
_desctription = description;
_id = id;
}
public String getName() {
return _name;
}
public String getDescription() {
return _description;
}
}
Product dell = new Product("dell","this is dell",1);
HashMap<String,Product> _hashMap = new HashMap<>();
_hashMap.put(dell.getName(),dell);
然后您将一组键传递给适配器,如下所示:
String[] productNames = _hashMap.keySet().toArray(new String[_hashMap.size()]);
当在适配器中返回视图时,您可以像以下示例一样设置监听器:
```java
```
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Context context = parent.getContext();
String itemName = getItem(position)
someView.setOnClikListener(new MyOnClickListener(context, itemName));
}
private class MyOnClickListener implements View.OnClickListener {
private String _itemName;
private Context _context
public MyOnClickListener(Context context, String itemName) {
_context = context;
_itemName = itemName;
}
@Override
public void onClick(View view) {
Intent intent = new Intent(_context, SomeClassToHandleData.class);
intent.putExtra(key_to_product_name,_itemName);
_context.startActivity(intent);
}
}
然后在其他活动中:
@Override
public void onCreate(Bundle) {
String productName = getIntent().getExtra(key_to_product_name);
Product product = _hashMap.get(productName);
}
*key_to_product_name是一个公共静态字符串,用作额外的密钥。
注:抱歉有打字错误,我很匆忙 :)
注2:这应该能让你明白如何做
注3:当我有更多时间时,我会添加详细描述。
我的评论:
- 不要使用任何switch语句
- 不要为每个产品创建单独的活动(您只需要一个)