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

标签 java android android-studio

我想知道如何通过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/

相关文章:

android - 是否可以在不安装Android Studio和Android SDK的情况下构建Android Studio项目?

android - getLastKnownLocation 使用 GPS_PROVIDER 和 NETWORK_PROVIDER 返回 NULL

java - CEP : source for real-time events or data feeds?

java - JPA : Many to many relationship in Google App

java JDBC ArrayIndexOutOfBoundsException 删除、更新时出现

android - 约束布局与百分比相对布局

java - Android在底部导航栏中禁用缩放效果

java - 安卓穿戴: very strange wait cycle

Android 向后兼容技术

java - TextView 同时返回 true 和 false 语句,而不是仅返回 true