【问题标题】:Passing ListView by using Intent使用 Intent 传递 ListView
【发布时间】:2015-10-16 05:14:00
【问题描述】:

我创建了一个列表视图,其中包含 -

  • “婴儿用品”
  • “面包店”
  • “烘焙”
  • “饮料”
  • “罐头食品”
  • “麦片早餐”
  • “调味品”
  • “乳制品”
  • “冷冻食品”
  • “杂项”
  • “非食品”
  • “意大利面/米饭”
  • “零食”

然后,我还想为每个列表视图创建一个 onClick 布局。

如果我单击 Shopping Items (ListView) 中的 Baby Items,如何将 Intent 用于 Baby_Items 布局

购物项目 (JAVA)

public class ShoppingItems extends ActionBarActivity {
ListView listView;
ArrayAdapter<String> adapter;
String[] item_category = {"Baby Items", "Bakery", "Baking",
        "Beverages", "Canned Goods", "Cereal Breakfast", "Condiments",
        "Dairy", "Frozen Foods", "Miscellaneous", "Non-Food Items",
        "Pasta / Rice", "Snacks"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shopping_items);
    listView = (ListView) findViewById(R.id.list_view);
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,item_category);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getBaseContext(),parent.getItemAtPosition(position)+ " is selected",Toast.LENGTH_LONG).show();
        }
    });

}

BABY_ITEMS (JAVA)

public class Baby_Items extends ActionBarActivity {

ArrayList<Products> products = new ArrayList<Products>();
ListAdapter boxAdapter;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_baby__items);

    ListView lvMain = (ListView) findViewById(R.id.lvbabyitems);
    lvMain.setAdapter(boxAdapter);
}

void fillData() {
    for (int i = 1; i <= 20; i++) {
        products.add(new Products("Products " + i, i * 100, false));

    }
}

public void showResult(View v) {
    String result = "Selected Product are :";
    int totalAmount=0;
    for (Products p : boxAdapter.getBox()) {
        if (p.box){
            result += "\n" + p.name;
            totalAmount+=p.price;
        }
    }
    Toast.makeText(this, result+"\n"+"Total Amount:="+totalAmount, Toast.LENGTH_LONG).show();
}

【问题讨论】:

    标签: java android listview android-intent android-activity


    【解决方案1】:

    查看this tutorial 了解有关ListView 实现的基础知识。您可以使用Intent 在ListView 项目点击上开始新的Activity

    【讨论】:

      【解决方案2】:

      在 onClick 方法中试试这个

      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  Toast.makeText(getBaseContext(),parent.getItemAtPosition(position)+ " is selected",Toast.LENGTH_LONG).show();
      
                   Intent intent = new Intent(ShoppingItems.this, Baby_Items.class);
                  intent.putExtra("baby_item", "" + parent.getItemAtPosition(position));
                  startActivity(intent);
              }
          });
      

      并在 Baby_Items 活动中获取额外的数据,例如

      if (getIntent().getExtras().containsKey("baby_item")) {
      
                  String item = getIntent().getStringExtra("baby_item");
      
              }
      

      【讨论】:

      • 您好,先生!你能指导我吗..因为我不知道我把你的代码放在哪一部分。
      • 但是“父”和“位置”是红色的。我试图删除那条线并播放?
      • intent.putExtra("baby_item", "" + parent.getItemAtPosition(position));该行的父级和位置
      • 只需复制 n 粘贴到列表视图单击侦听器部分的上方。它会正常工作。它没有错误。。
      猜你喜欢
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2018-10-19
      • 2014-09-14
      • 2014-06-04
      • 2019-01-13
      相关资源
      最近更新 更多