我正在用一个简单的应用程序学习android。有没有办法,当我点击列表视图中的某个项目时,它会转到一个新活动,但它包含特定于所点击项目的特定列表。
例如:
清单1 - >(ActivityName)奶酪,苹果,水
清单2 - >(ActivityName)面包,葡萄,苏打水
列表3 - >(ActivityName)蛋糕,橙子,牛奶
我知道如何打开一个新活动并使用意图传递数据,但我不知道如何将列表作为列表视图中的1项包含。
答案 0 :(得分:0)
您所需要的只是将字符串列表传递给您的新活动。
以下是示例代码:
ListView lstView;
ArrayAdapter<String> adapter;
ArrayList<String> list = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lstView = (ListView) findViewById(R.id.main_activity_layout);
// Set the ArrayAdapter as the ListView's adapter.
adapter= new ArrayAdapter<String>(this, R.layout.simplerow, lstView);
list.add("Cheese, apples, water");
list.add("bread, grapes, soda");
list.add("cake, oranges, milk");
lstView.setAdapter(adapter);
adapter.notifyDataSetChanged();
lstView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
for (int j = 0; j < adapterView.getChildCount(); j++)
adapterView.getChildAt(j).setBackgroundColor(Color.TRANSPARENT);
// change the background color of the selected element
view.setBackgroundColor(Color.LTGRAY);
selectedItemIndex = i;
Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
intent.putExtra("info", list.get(i));
intent.putExtra("selectedTemplateIndex", selectedItemIndex);
startActivityForResult(intent, 100);
}
});
}
因此,当其他活动加载时,您必须获取已发送的信息。
String contactInfo;
int selectedTemplateIndex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_contact);
// get the contact info from the contact activity so the user can see the selected contact info
Bundle extras = getIntent().getExtras();
if (extras != null) {
contactInfo = extras.getString("info");
selectedTemplateIndex = extras.getInt("selectedTemplateIndex");
}
.
.
.
}