因此,我一直在尝试开发一个应用程序,您可以自己订购三明治。到目前为止,我已经通过列表视图管理了一切,可以订购哪种类型的三明治等。
然后,我进入下一个活动,该活动应该显示用户选择的三明治,但不幸的是没有弹出任何内容。
如果您有第二个活动的替代代码,我将为其打开。
代码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();
}
}
答案 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);