在不同的活动中将数据从 ListView 传递到 TextView,Android
Posted
技术标签:
【中文标题】在不同的活动中将数据从 ListView 传递到 TextView,Android【英文标题】:Passing Data from ListView To TextView in different Activities, Android 【发布时间】:2014-05-01 03:36:16 【问题描述】:我正在尝试将一个 ListView 项从我的 MainActivity 传递到一个 TextView 项到 MenuActivity,意图成功地创建了第二个活动,但是当我尝试传递数据时我遇到了问题。 MainActivity.Java 是一个搜索屏幕,在输入时会显示餐厅名称列表,当用户选择餐厅时,会将其带到菜单页面。我希望他们的选择作为菜单标题转移到新活动。
MainActivity.Java
lv.setOnItemClickListener(new OnItemClickListener()
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
Intent myIntent = new Intent(MainActivity.this, MenuActivity.class);
String listItem = (String) lv.getItemAtPosition(position);
myIntent.putExtra("restaurant" ,listItem );
startActivity(myIntent);
); // end of lv.setOnItemClickListener
MenuActivity.Java
public class MenuActivity extends ExpandableListActivity
// textview / menu header
private TextView menuHeader;
// parent list items
private static final String arrGroupElements[] = "Appetizers", "Main Course", "Desserts",
"Beverages";
// strings for child elements
private static final String arrChildElements[][]=
"Appetizer 1", "Appetizer 2", "Appetizer 3", "Appetizer 4", "Appetizer 5",
"Main Course 1", "Main Course 2", "Main Course 3", "Main Course 4", "Main Course 5",
"Dessert 1", "Dessert 2", "Dessert 3", "Dessert 4", "Dessert 5",
"Beverage 1", "Beverage 2", "Beverage 3", "Beverage 4", "Beverage 5"
;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_screen);
// added code
setListAdapter(new ExpandableListAdapter(this));
menuHeader = (TextView) findViewById(R.id.articleHeaderTextView);
Bundle extras = getIntent().getExtras();
String searchData = extras.getString("restaurant");
menuHeader.setText(searchData);
【问题讨论】:
你想传递给 MenuActivity 什么?在我看来,您只是在传递字符串“restaurant”。您的目标是获取列表项并将其传递给 menuHeader 吗? 是的,我的目标是通过列表项。我是 android 新手,很可能传入了错误的参数。我要传递什么来获取列表项? 【参考方案1】:试试这个
lv.setOnItemClickListener(new OnItemClickListener()
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
Intent myIntent = new Intent(MainActivity.this, MenuActivity.class);
String listItem = (String) lv.getItemAtPosition(position);
myIntent.putExtra("restaurant" ,listItem );
startActivity(myIntent);
setResult(RESULT_OK, intent);
);
并在菜单活动中覆盖 onactivityresults 方法
public class MenuActivity extends ExpandableListActivity
// textview / menu header
private TextView menuHeader;
// parent list items
private static final String arrGroupElements[] = "Appetizers", "Main Course", "Desserts",
"Beverages";
// strings for child elements
private static final String arrChildElements[][]=
"Appetizer 1", "Appetizer 2", "Appetizer 3", "Appetizer 4", "Appetizer 5",
"Main Course 1", "Main Course 2", "Main Course 3", "Main Course 4", "Main Course 5",
"Dessert 1", "Dessert 2", "Dessert 3", "Dessert 4", "Dessert 5",
"Beverage 1", "Beverage 2", "Beverage 3", "Beverage 4", "Beverage 5"
;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_screen);
// added code
setListAdapter(new ExpandableListAdapter(this));
menuHeader = (TextView) findViewById(R.id.articleHeaderTextView);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
if(resultCode==RESULT_OK)
String searchData=data.getExtras().getString("restaurant");
menuHeader.setText(searchData);
【讨论】:
谢谢,应用程序运行无误。但是,我仍然无法在 MenuActivity 中显示名称。由于错误,我还不得不更改它.. setResult(RESULT_OK, intent); --> setResult(RESULT_OK, myIntent); 你能不能尝试调试你的代码来检查搜索数据是否得到正确的值,最好确定问题出在哪里。抱歉,你应该把你的意图名称而不是意图 我真的不知道如何使用 android 进行调试,但我相信问题就在这里。 myIntent.putExtra("餐厅" ,listItem );我不确定参数对于 putExtra 方法的真正作用。 您需要跟踪您的值尝试检查列表项是否包含任何值 对不起,因为我是 eclipse 和 android 的新手,但是你会怎么做呢?以上是关于在不同的活动中将数据从 ListView 传递到 TextView,Android的主要内容,如果未能解决你的问题,请参考以下文章
在 android studio kotlin 中将数据从活动传递到片段(不重复,这些方法不起作用)
我可以在下一个活动中将字符串值从 MulitiColumn listView 存储到 Simple ListView 吗?