You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android新手求助:从ArrayList取值并设置到TextView

解决Android音乐库应用中TextView赋值问题

作为Android新手,你已经迈出了关键的第一步——创建了存储音乐信息的ArrayList,接下来我们一步步完成TextView的内容设置:


第一步:确保你的musics类有Getter方法

要从musics对象中取出字段值,首先需要给类添加Getter方法(如果还没写的话)。Java中通常会把类的字段设为私有,通过Getter来安全访问:

public class musics { // 建议类名首字母大写,改成Musics更符合Java规范
    private String artistNameOrGroup;
    private String trackName;
    private String genre;

    // 你的构造方法
    public musics(String artistNameOrGroup, String trackName, String genre) {
        this.artistNameOrGroup = artistNameOrGroup;
        this.trackName = trackName;
        this.genre = genre;
    }

    // 添加以下Getter方法
    public String getArtistNameOrGroup() {
        return artistNameOrGroup;
    }

    public String getTrackName() {
        return trackName;
    }

    public String getGenre() {
        return genre;
    }
}

第二步:从ArrayList取数据并设置到TextView

分两种常见场景来处理:

场景1:显示单个音乐条目(比如“正在播放”的信息)

如果你想展示ArrayList中某一个特定的音乐条目(比如第一个),可以这样写:

// 先获取你已经找到的TextView
TextView artistOrGroupPlayingTrack = findViewById(R.id.your_artist_textview_id);
// 同理,找到曲目和流派的TextView(如果你的布局里有)
TextView trackNameTv = findViewById(R.id.your_track_textview_id);
TextView genreTv = findViewById(R.id.your_genre_textview_id);

// 检查ArrayList是否为空,避免空指针异常
if (!music.isEmpty()) {
    // 获取第一个音乐对象(你也可以根据需求取其他索引,比如点击列表项的位置)
    musics currentMusic = music.get(0);
    
    // 给每个TextView设置对应的值
    artistOrGroupPlayingTrack.setText(currentMusic.getArtistNameOrGroup());
    trackNameTv.setText(currentMusic.getTrackName());
    genreTv.setText(currentMusic.getGenre());
}

场景2:展示整个音乐列表(音乐库核心需求)

既然是音乐库应用,你大概率需要展示所有音乐的列表,这时候推荐使用RecyclerView来实现流畅的列表展示:

  1. 创建列表项布局(比如item_music.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/item_artist_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/item_track_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:layout_marginTop="4dp"/>

    <TextView
        android:id="@+id/item_genre_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textColor="@android:color/darker_gray"
        android:layout_marginTop="4dp"/>
</LinearLayout>
  1. 创建RecyclerView的Adapter:
public class MusicAdapter extends RecyclerView.Adapter<MusicAdapter.MusicViewHolder> {
    private ArrayList<musics> musicList;

    // 构造方法,传入音乐列表
    public MusicAdapter(ArrayList<musics> musicList) {
        this.musicList = musicList;
    }

    @NonNull
    @Override
    public MusicViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // 加载列表项布局
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_music, parent, false);
        return new MusicViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull MusicViewHolder holder, int position) {
        // 获取当前位置的音乐对象
        musics currentMusic = musicList.get(position);
        // 设置TextView内容
        holder.artistTv.setText(currentMusic.getArtistNameOrGroup());
        holder.trackTv.setText(currentMusic.getTrackName());
        holder.genreTv.setText(currentMusic.getGenre());
    }

    @Override
    public int getItemCount() {
        // 返回列表长度
        return musicList.size();
    }

    // ViewHolder类,缓存列表项的视图,提升性能
    public static class MusicViewHolder extends RecyclerView.ViewHolder {
        TextView artistTv, trackTv, genreTv;

        public MusicViewHolder(@NonNull View itemView) {
            super(itemView);
            artistTv = itemView.findViewById(R.id.item_artist_tv);
            trackTv = itemView.findViewById(R.id.item_track_tv);
            genreTv = itemView.findViewById(R.id.item_genre_tv);
        }
    }
}
  1. 在Activity中初始化RecyclerView:
// 找到RecyclerView
RecyclerView musicRecyclerView = findViewById(R.id.music_recycler_view);
// 设置布局管理器(线性布局,纵向排列)
musicRecyclerView.setLayoutManager(new LinearLayoutManager(this));
// 创建Adapter并设置给RecyclerView
MusicAdapter adapter = new MusicAdapter(music);
musicRecyclerView.setAdapter(adapter);

小提示

  • 遵循Java命名规范:类名首字母大写(比如把musics改成Musics),变量名用驼峰式(比如musicList而不是music,避免和类名混淆)
  • 记得处理空列表的情况,防止出现空指针异常
  • 如果需要添加点击交互(比如点击列表项跳转到“播放界面”),可以在Adapter的ViewHolder中给itemView设置点击监听

内容的提问来源于stack exchange,提问作者klavdiym

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:52:54