高斋晓开卷,独共圣人语。这篇文章主要讲述将自定义ListView项目传递给Android中的其他活动相关的知识,希望能为你提供帮助。
所以我的新闻应用程序有一个自定义列表视图与解析的缩略图,标题和新闻网址,现在我希望将这三个项目传递到另一个活动使用意图,必须显示列表中的特定新闻项目与完整的新闻详情,请帮助我..
答案只需使用Intent
将数据从ListView
传递到详细信息页面:
Intent i = new Intent(FirstScreen.this, DetailScreen.class);
String title = "title";
String details = "details";
.....
i.putExtra("STRING_TITLE", title);
i.putExtra("STRING_DETAILS", details);
...
传递您需要的数据。
在DetailScreen.class中接收Intent
String titleString,....;
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if(extras == null) {
titleString= null;
} else {
titleString= extras.getString("STRING_TITLE");
....
}
} else {
titleString= (String) savedInstanceState.getSerializable("STRING_TITLE");
.....
}
从TextView中检索文本,如下所示:
String title = ((TextView) view.findViewById(your title textview id)).getText().toString();
Intent newsIntent = new Intent(getApplicationContext(), NewsDetails.class);
newsIntent.putExtra("title",title);
startActivity(newsIntent);
另一答案在Activity之间传递时,传递自定义对象需要实现Parcelable。下面的Intent类方法允许传递parcelable对象。
putExtra(String name, Parcelable value)
以下方法允许传递完整的数据列表
putParcelableArrayListExtra(String name, ArrayList<
? extends Parcelable>
value)
您可以在http://www.survivingwithandroid.com/2015/05/android-parcelable-tutorial-list-class.html上查看博客中的parcelable实现
您可以自己谷歌类似的解决方案。
另一答案对于那些可能遇到类似问题的人来说,这就是我在同一自定义列表视图中发送多个项目的方式
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<
?>
parent, View view, int position, long id) {
Intent newsIntent = new Intent(getApplicationContext(),NewsDetails.class);
titleText = (TextView) view.findViewById(R.id.newstitle);
TextView urlText = (TextView) view.findViewById(R.id.url);
title = titleText.getText().toString();
feedUrl = urlText.getText().toString();
newsIntent.putExtra("title",title);
newsIntent.putExtra("url",feedUrl);
startActivity(newsIntent);
}
});
另一答案试试这个传递Url:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {Uri uri = Uri.parse(myRssFeed.getItem(position).getLink());
Intent w = new Intent(this, Contenturl.class);
w.putExtra(org.rss.mywindows.Contenturl.URL,uri.toString());
startActivity(w);
在您想要的其他活动中试试这个:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contenturl);
String turl = getIntent().getStringExtra(URL);
Uri feedUri = Uri.parse(turl);
标题:我认为它的字符串因此不容易从意图中传递出来。
如果你想传递对象,那么你应该使用Parcelable Search,你可以更好地将所有事物逐个传递给意图。
另一答案我在编程世界中仍然是新手,但在这种情况下我所做的是将这些自定义listview对象存储为我制作的类中的“静态”属性,这纯粹是为了在另一个活动中存储我们需要的东西。
然后启动要转到的活动,并使用存储为自定义ListView对象作为专用数据传输的类的静态属性。
【将自定义ListView项目传递给Android中的其他活动】例如:您必须将CustomListview Object传递给另一个Activity:
ActivityOne{CustomListView clv = new CustomListView () ;
ObjectTransferClass.customListView = clv;
} ObjectTransferClass {public static MyCustomListViewcustomListView ;
// other objects to transfer can be declaerd here }ActivityTwo {MyCustomListView clvFromActivityOne = ObjectTransferClass.customListView;
// use clvFromActivityOne for further processes
// do other things }
推荐阅读
- 不是封闭的类错误Android Studio
- 未找到Android活动异常(找不到处理Intent的活动)
- 在Push Notification Android上下载文件
- 差异以及何时使用getApplication(),getApplicationContext(),getBaseContext()和someClass.this
- 通过Electron Framework掌握剪贴板的使用
- 如何使用Electron Framework在OS的文件浏览器中显示和聚焦文件(或文件夹)
- 如何在Electron Framework中连接到MySQL数据库
- 如何在Electron Framework中的渲染器进程内执行主进程的功能
- 如何在Electron Framework中提取.zip文件的内容(解压缩)