【问题标题】:Using listview and adding the data for next class使用 listview 并为下一节课添加数据
【发布时间】:2018-12-05 21:41:22
【问题描述】:

所以,我一直在尝试开发一个应用程序,您可以在其中自己订购三明治。到目前为止,我已经使用列表视图管理了所有内容,您可以订购什么类型的三明治等等。

但我不确定下一步,即当有人单击某个项目时,必须以某种方式保存该项目。我对 Arraylist 的猜测?

这就是我需要帮助的地方,以某种方式记录点击,以便用户可以看到他们点击了哪些项目并在下一个屏幕上确认购买(这将是下一堂课)。

我看到了这个 youtube 视频,https://www.youtube.com/watch?v=VBN3LMb7rss&t=166s 这就是我想要“存储”“数据”或类似内容的方式。

亲切的问候, 这是我的代码。

 package com.example.boo.cafestudent;

 import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.ListAdapter;
 import android.widget.ListView;
 import android.widget.Toast;

 import java.util.ArrayList;

 public class Order extends AppCompatActivity {

//ListView mackorListView;
//ArrayList <string> order_item_name;
// public final ArrayList<String> bestallning = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.orderactivity);

    String[] mackor ={"Ostsmörgås","Skinksmörgås","Ost och Skinksmörgås",      "Salamismörgås","Räksmörgås",
 "Rensmörgås", "Älgsmörgås", "Köttbullesmörgås"};



 ListAdapter johansadapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, mackor);

    //hämtar ListView
 ListView mackorListView = (ListView) findViewById(R.id.ListViewMackor);

//Hämtar data från array stringen

   // final String[] array_mackor =     getResources().getStringArray(R.array.arraymackor);

    //skapandet av en array adapter

    //Själva adaptern till ListView
    mackorListView.setAdapter(johansadapter);


    //kopplar onClicklistener till Listvie
    mackorListView.setOnItemClickListener(
            new AdapterView.OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> parent, View view,     int position, long id){
                    String mackor = String.valueOf(parent.getItemAtPosition(position));
                    Toast.makeText(Order.this, mackor + " har lagts      till", Toast.LENGTH_LONG).show();

                }
            }
    );
}



public void onClick (View View){
    Intent i = new Intent (getApplicationContext(), Confirmation.class);
    //Intent.putExtra("bestallning",bestallning);
    startActivity(i);
 }}

【问题讨论】:

  • 一种方法是将项目存储在数据库中。 Google 提供 Room API 来帮助您与数据库交互。
  • 我看到了这个 youtube 视频,youtube.com/watch?v=VBN3LMb7rss&t=166s 这就是我想要“存储”“数据”或类似的方式。
  • 您是说您要允许用户从列表中选择项目吗?然后你将如何处理这些物品?
  • 正确,然后用户将进入下一个活动,查看他们选择的内容,然后确认订单。

标签: java android-studio


【解决方案1】:

每次点击时只需将点击的项目添加到 Arraylist 中。在顶部声明一个数组列表作为实例变量。代码可能看起来像这样。如果您想在另一个活动或类中访问数组的值,请使用 putExtra() 或声明 arraylist public static。

 ArrayList<String> clickedSandwiches = new ArrayList<String>();



   mackorListView.setOnItemClickListener(
            new AdapterView.OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> parent, View view,     int position, long id){
                    String mackor = String.valueOf(parent.getItemAtPosition(position));
                    Toast.makeText(Order.this, mackor + " har lagts      till", Toast.LENGTH_LONG).show();
                    clickedSandwiches.add(mackor);

                }
            }
    );
}

【讨论】:

  • 谢谢!一个通用的问题,当尝试使用意图移动到下一个活动并且没有弹出新窗口时,它是否通常取决于当前的活动意图,或者你试图到达的那个?
  • 如果没有实际看到代码就很难判断,考虑在一个新问题中提出这个问题。如果我的回答解决了您的问题,请将其标记为已接受:)
猜你喜欢
  • 1970-01-01
  • 2013-07-26
  • 2016-06-15
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
相关资源
最近更新 更多