将关联到 ListView 单元格的数据传递给项目的另一个活动 onClick()

威廉·乌贡纳 Geoffrey-Nwanka

我是安卓编程的新手。我正在使用ListView自定义布局编写一个简单的音乐应用程序列表中的每一行都有两个TextView's歌曲名和艺术家名。

我有两个活动,MainActivity 和 nowPlaying Activity,nowPlaying Activity 上有一个列表,它也有两个TextView's. 我想要实现的是,当我单击ListView(在主活动中)上的一个项目时,我想获取歌曲名称艺术家姓名并将其设置TextView's为 nowPlaying 活动中的。

主要活动

public class MainActivity extends AppCompatActivity {

ListView listView;
ArrayList<Songs> song;

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

    song = new ArrayList<Songs>();
    song.add(new Songs("Shape of you", "ed sheeran", "4:59"));
    song.add(new Songs("Energy", "avelino", "3:15"));
    song.add(new Songs("Wages", "bad sounds", "2:56"));
    song.add(new Songs("L'Hiver Indien", "baloji", "3:28"));
    song.add(new Songs("Faded Heart", "Borns", "4:59"));
    song.add(new Songs("King Ruby", "ider", "4:59"));
    song.add(new Songs("Drown", "kovic", "4:59"));
    song.add(new Songs("Supercut", "lorde", "4:59"));
    song.add(new Songs("&Run", "sir sly", "4:59"));
    song.add(new Songs("Live in the moment", "portugal. the man", "4:59"));

    SongAdapter adapter = new SongAdapter(this, song);

    listView = findViewById(R.id.list_view);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            TextView songName = findViewById(R.id.song_name);
            TextView artistName = findViewById(R.id.artist);
            Intent intent = new Intent(MainActivity.this, nowPlaying.class);
            intent.putExtra("name", listView.getItemAtPosition(i).toString());
            startActivity(intent);
        }
    });
    listView.setAdapter(adapter);
}

}

歌曲适配器

public class SongAdapter extends ArrayAdapter<Songs> {


public SongAdapter(Activity context, ArrayList<Songs> song) {
    // Here, we initialize the ArrayAdapter's internal storage for the context and the list.
    // the second argument is used when the ArrayAdapter is populating a single TextView.
    // Because this is a custom adapter for two TextViews and an ImageView, the adapter is not
    // going to use this second argument, so it can be any value. Here, we used 0.
    super(context, 0, song);
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    //return super.getView(position, convertView, parent);
    View listItemView = convertView;
    if (listItemView == null) {
        listItemView = LayoutInflater.from(getContext()).inflate(
                R.layout.song_item, parent, false);
    }

    Songs currentSong = getItem(position);

    TextView songName = listItemView.findViewById(R.id.song_name);
    songName.setText(currentSong.getSongName());

    TextView artistName = listItemView.findViewById(R.id.artist);
    artistName.setText(currentSong.getArtistName());

    TextView time = listItemView.findViewById(R.id.time);
    time.setText(currentSong.geTime());

    return listItemView;
}
}

截屏

在屏幕截图(上面给出)中,每一行都有一个歌曲名称和另一个艺术家名称。单击该行时,我想获取名称并将其设置在其他活动上,并对艺术家姓名执行相同操作。

我希望ListView.

歌曲类

public class Songs {
private String mSongName;
private String mArtistName;
private String mTime;

public Songs(String songName, String artistName, String Time) {
    mSongName = songName;
    mArtistName = artistName;
    mTime = Time;
}

public String getSongName() {
    return mSongName;
}
public String getArtistName() {
    return mArtistName;
}

public String geTime() {
    return mTime;
}

}

苏丹舒沃拉

您想将一些数据(在您的情况下歌曲名称艺术家姓名)传递给其他活动。因此,这可以通过通过意图传递所需数据来实现,因为意图是消息传递对象,您可以将小块数据包装到它们中以在活动之间传递。所以相同的代码是:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            TextView songName = view.findViewById(R.id.song_name);
            TextView artistName = view.findViewById(R.id.artist);
            Intent intent = new Intent(MainActivity.this, nowPlaying.class);
            intent.putExtra("song_name", songName.getText().toString());
            intent.putExtra("artist_name", artistName.getText().toString());
            startActivity(intent);
        }
    });

视图中onItemClick()方法给出的是一个被点击的视图(通过适配器返回),所以你得到它的内容和直传它的其他活动,因为它是。

替代方式:

您无法访问onItemCLick() 中歌曲列表(歌曲数组列表),除非它声明为final因此,您可以按如下方式声明并访问它:

final ArrayList<Songs> songs = new ArrayList<Songs>() {{
    add(new Songs("Shape of you", "ed sheeran", "4:59"));
    add(new Songs("Energy", "avelino", "3:15"));
    add(new Songs("Wages", "bad sounds", "2:56"));
    add(new Songs("L'Hiver Indien", "baloji", "3:28"));
    add(new Songs("Faded Heart", "Borns", "4:59"));
    add(new Songs("King Ruby", "ider", "4:59"));
    add(new Songs("Drown", "kovic", "4:59"));
    add(new Songs("Supercut", "lorde", "4:59"));
    add(new Songs("&Run", "sir sly", "4:59"));
    add(new Songs("Live in the moment", "portugal. the man", "4:59"));
}}

现在您可以使用此歌曲列表在onItemClick() 方法中获取数据,如下所示:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent = new Intent(MainActivity.this, nowPlaying.class);
                intent.putExtra("song_name", songs.get(i).getSongName()); // Note: If the getters are not set to get the song name and artist name then they need to be set to use this approach
                intent.putExtra("artist_name", songs.get(i).getArtistName());
                startActivity(intent);
            }
        });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Bundle将数组数据传递给ListView上的另一个活动,请单击

来自分类Dev

将ListView项目onclick解析为另一个活动,并匹配JSON中的特定数据

来自分类Dev

如何将ListView上的数据动态传递给另一个活动

来自分类Dev

WPF-将Listview网格单元格绑定到另一个控件

来自分类Dev

将Android ListView onClick连接到另一个活动

来自分类Dev

如何将数据关联到ListView项目?

来自分类Dev

如何将数据关联到ListView项目?

来自分类Dev

如何从ListView获取值并将JSON数据传递到另一个Activity

来自分类Dev

需要将 json 数据传递到另一个页面用于 Listview

来自分类Dev

通过另一个活动的onClick事件将值传递给其容器活动的两个片段

来自分类Dev

Recyclerview将ID从数组传递到另一个活动onClick返回随机ID

来自分类Dev

多个Intent将listView信息从一个活动传递到另一个活动

来自分类Dev

Android - 将数据传递给另一个活动

来自分类Dev

如何将unique_id的值传递给要在ListView中使用的另一个活动

来自分类Dev

将数据从listView传递到另一个Activity EditText

来自分类Dev

如何将数据传递给组件到另一个组件

来自分类Dev

如何将字符串从onclick事件传递给另一个类

来自分类Dev

将一个活动中的值传递到另一个活动中的ListView中并保存这些值

来自分类Dev

Android-将项目从另一个活动onButtonClick添加到ListView

来自分类Dev

将ListView和ArrayAdpater传递给另一个类

来自分类Dev

通过索引号将一个listview项目复制到另一个listview

来自分类Dev

从一个活动将数据传递到另一个,然后打印

来自分类Dev

Android OnClick Listview项目动画

来自分类Dev

如何将listview的值从aspx页传递到另一个?

来自分类Dev

在UICollectionView中选择单元格时将值传递给另一个ViewController

来自分类Dev

配置tableview单元格以将获取的对象传递给另一个视图(NSFetchedResultsController)

来自分类Dev

Android Studio:如何将项目从listview1添加到listview2 onClick

来自分类Dev

绑定listView以在另一个listView中显示与其关联的数据

来自分类Dev

绑定listView以在另一个listView中显示与其关联的数据

Related 相关文章

  1. 1

    使用Bundle将数组数据传递给ListView上的另一个活动,请单击

  2. 2

    将ListView项目onclick解析为另一个活动,并匹配JSON中的特定数据

  3. 3

    如何将ListView上的数据动态传递给另一个活动

  4. 4

    WPF-将Listview网格单元格绑定到另一个控件

  5. 5

    将Android ListView onClick连接到另一个活动

  6. 6

    如何将数据关联到ListView项目?

  7. 7

    如何将数据关联到ListView项目?

  8. 8

    如何从ListView获取值并将JSON数据传递到另一个Activity

  9. 9

    需要将 json 数据传递到另一个页面用于 Listview

  10. 10

    通过另一个活动的onClick事件将值传递给其容器活动的两个片段

  11. 11

    Recyclerview将ID从数组传递到另一个活动onClick返回随机ID

  12. 12

    多个Intent将listView信息从一个活动传递到另一个活动

  13. 13

    Android - 将数据传递给另一个活动

  14. 14

    如何将unique_id的值传递给要在ListView中使用的另一个活动

  15. 15

    将数据从listView传递到另一个Activity EditText

  16. 16

    如何将数据传递给组件到另一个组件

  17. 17

    如何将字符串从onclick事件传递给另一个类

  18. 18

    将一个活动中的值传递到另一个活动中的ListView中并保存这些值

  19. 19

    Android-将项目从另一个活动onButtonClick添加到ListView

  20. 20

    将ListView和ArrayAdpater传递给另一个类

  21. 21

    通过索引号将一个listview项目复制到另一个listview

  22. 22

    从一个活动将数据传递到另一个,然后打印

  23. 23

    Android OnClick Listview项目动画

  24. 24

    如何将listview的值从aspx页传递到另一个?

  25. 25

    在UICollectionView中选择单元格时将值传递给另一个ViewController

  26. 26

    配置tableview单元格以将获取的对象传递给另一个视图(NSFetchedResultsController)

  27. 27

    Android Studio:如何将项目从listview1添加到listview2 onClick

  28. 28

    绑定listView以在另一个listView中显示与其关联的数据

  29. 29

    绑定listView以在另一个listView中显示与其关联的数据

热门标签

归档