循环后没有得到任何结果,几乎完成了

时间:2018-12-06 13:22:36

标签: java android android-studio

因此,我一直在尝试开发一个应用程序,您可以自己订购三明治。到目前为止,我已经通过列表视图管理了一切,可以订购哪种类型的三明治等。

然后,我进入下一个活动,该活动应该显示用户选择的三明治,但不幸的是没有弹出任何内容。

如果您有第二个活动的替代代码,我将为其打开。

代码1 =您在哪里订购什么三明治:

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{




  ArrayList<String> klickademackor = new ArrayList<String>();
  @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();
                    klickademackor.add(mackor);
                }
            });

};



public void onClick (View View){
    Intent i = new Intent (Order. this, Confirmation.class);


    startActivity(i);
}}

Code2 =假定使用ID为textview2的textview显示结果。

package com.example.boo.cafestudent;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class Confirmation extends AppCompatActivity {

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

private TextView textviewMackor;


@SuppressLint("WrongViewCast")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.confirmationactivity);

    textviewMackor = (TextView) findViewById(R.id.textView2);

    for (String index : klickademackor) {
        textviewMackor.append(index + "\n");
    }

}

public void confirmation (View view){
    Toast.makeText(this,"Din beställning är bekräftad",    Toast.LENGTH_SHORT).show();
}


}

2 个答案:

答案 0 :(得分:2)

在代码1中,您创建了一个数组列表,如下所示:

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

并且您已将选定的项添加到setOnItemClickListener方法内的此ArrayList中。现在,如果您想在另一个活动中获取此数组列表,则需要将此ArrayList及其意图传递给这里:

public void onClick (View View){
Intent i = new Intent (Order. this, Confirmation.class);
i.putStringArrayListExtra("myArrayList",klickademackor);

startActivity(i);
}}

这会将您的ArrayList以及Intent对象i传递给您,您可以使用:

ArrayList arrayList<Integer> = getIntent().getStringArrayListExtra("myArrayList");

因此,请在第二个活动中编写此代码,并使用此ArrayList在文本视图中显示。我希望这会有所帮助。

答案 1 :(得分:-1)

我猜您正在尝试使用错误的上下文(在本例中为Order活动的上下文)显示Toast。

在您的点击监听器中,尝试使用View实例获取上下文:

Toast.makeText(view.getContext();, mackor + " har lagts till", Toast.LENGTH_LONG).show();
                    klickademackor.add(mackor);