如何查看特定列表视图项的详细数据
Posted
技术标签:
【中文标题】如何查看特定列表视图项的详细数据【英文标题】:How to view detailed data of a specific list view item 【发布时间】:2011-07-15 00:49:20 【问题描述】:假设我有一个来自某个国家/地区的城市列表。 如果用户单击其中一个,我希望显示一个新屏幕,其中包含该列表元素的详细信息。 此外,该屏幕还有其他按钮(例如:撰写评论、发布图片)
我怎样才能做到这一点?
【问题讨论】:
到目前为止你做了什么?似乎是 listview 的简单实现 我想得有点难,我想我会在我的应用程序子类中存储一个选定的城市对象,当我开始一个新的点击意图时,该活动将使用来自对象的数据存储在我的应用程序子类中。 【参考方案1】:City
类应该实现Parcelable
。它的toString()
方法应该返回城市的名称。 (而不是简单地将城市作为String
。)
当您填充 ListView 时,请使用 ArrayAdapter<City>
而不是 ArrayAdapter<String>
(此代码假定城市保存在 List<City> list
中):
City[] cities = new City[list.size()];
list.toArray(cities);
mListView = (ListView) findViewById(R.id.citylist);
mListView.setAdapter(new ArrayAdapter<City>(this,
R.layout.listitem, cities));
在您的 onItemClick 处理程序中,获取所选城市并将其添加为您用于启动详细信息活动的意图的额外内容:
mListView.setOnItemClickListener(new OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> a,
View v, int position, long id)
City city = (City) a.getItemAtPosition(position);
Intent intent = new Intent(v.getContext(), DetailsActivity.class);
intent.putExtra("com.example.cities.City", city);
startActivity(intent);
);
在您的详细信息活动中,从额外的意图中获取城市:
Bundle bundle = getIntent().getExtras();
City city = bundle.getParcelable("com.example.cities.City");
【讨论】:
@David detailview 有什么更好的选择?FragmentActivity
或 Activity
或 fragment in Activity
?
@Roon13 对不起,我不知道。以上是关于如何查看特定列表视图项的详细数据的主要内容,如果未能解决你的问题,请参考以下文章
如何设置视图或活动来处理以前的列表活动?例如“查看完整的详细信息页面”
如何从列表视图中从 onItemClick() 获得的列表项的联系人 Uri 中检索数据?
SwiftUI之深入解析如何处理特定的数据和如何在视图中适配数据模型对象