gpt4 book ai didi

java - 如何通过 gridView.setOnItemClickListener() 中的 intent() 传递 ArrayList 数据

转载 作者:搜寻专家 更新时间:2023-11-01 09:27:59 25 4
gpt4 key购买 nike

我想知道如何通过 gridView.setOnItemClickListener() 中的 intent() 传递 ArrayList 数据并在 ShowTracksActivity.java 中获取它。怎么可能?

MainActivity.java

ArrayList<Artist>artists = new ArrayList<Artist>();

// Artist 1
String[] artist_title = new String[]{ "Title 1", "Title 2","Title 3", "Title 4" };
artists.add(new Artist("Artist Name", "Album Name", "img_album", artist_title ));

// Artist 2
//...

ArtistAdapter adapter = new ArtistAdapter(this, artists);

GridView gridView = (GridView) findViewById(R.id.gridview);

gridView.setAdapter(adapter);

gridView.setOnItemClickListener(new GridView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{

Intent ShowTrackIntent = new Intent(MainActivity.this, ShowTracksActivity.class);

// Here ?
// ShowTrackIntent.putExtra( ??? );

startActivity(ShowTrackIntent);
}
});

ShowTracksActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// ???
}

感谢您的帮助。

最佳答案

好的,这就是想法,当您点击艺术家时,您会在点击监听器中获得该单元格的位置,所以现在您必须使用该位置并从该位置的艺术家列表中取出艺术家。并通过 Intent 传递它,在 android 中传递用户定义的数据/对象,您需要使它们可序列化或可打包。可以引用这个question

Intent/Bundle 类也有用于在 Activity 之间传递此类数据的方法。

示例代码:

Intent intent = new Intent(CurrentActivity.this, TargetActivity.class);
intent.putExtra(key, value); // Here key would be String and value can be either Parcelable or Serializable
startActivity(intent);

在您的项目点击监听器中:

Artist artist = artists.get(postion);
Intent intent = new Intent(MainActivity.this, ShowTracksActivity.class);
intent.putExtra("selected_artist", artist); // Here key would be String and value can be either Parcelable or Serializable
startActivity(intent);

注意:您必须使您的 Artist 类可序列化才能将其传递给其他 Activity,有关如何操作,您可以引用此 Why use parcelable? , How To make class parcelable?The easy and dirty way

关于java - 如何通过 gridView.setOnItemClickListener() 中的 intent() 传递 ArrayList 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49401458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com