android - 如何在 RecyclerView 中显示此列表
问题描述
我已经尝试了几天,但我无法显示这个 RecyclerView。也看了很多网站的教程,可惜还是没有成功。
我不明白应该如何从 RingTonesDao 获取列表并在 RecyclerView 中显示这是 RingToneAdapter:
package com.example.ringtone2021;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class RingTonesAdapter extends RecyclerView.Adapter<RingTonesAdapter.ringTonesViewHolder> {
private RingTonesDao ringTonesDao;
private List<RingTones> ringTonesList;
public class ringTonesViewHolder extends RecyclerView.ViewHolder {
private TextView tv_musicname;
private ImageView btn_ringtone;
private ImageView btn_sms;
private ImageView btn_alarm;
private ImageView btn_play;
private ImageView btn_addToFavorites;
public ringTonesViewHolder(@NonNull View itemView) {
super(itemView);
tv_musicname = itemView.findViewById(R.id.tv_musicName);
btn_ringtone = itemView.findViewById(R.id.iv_ringTone);
btn_sms = itemView.findViewById(R.id.iv_sms);
btn_alarm = itemView.findViewById(R.id.iv_alarm);
btn_play = itemView.findViewById(R.id.iv_play);
btn_addToFavorites = itemView.findViewById(R.id.iv_favorite);
}
}
@NonNull
@Override
public ringTonesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.actv_main_list, parent, false);
return new ringTonesViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ringTonesViewHolder holder, int position) {
// holder.tv_musicname.setText(ringTonesList.get(position).getMusicNames());
}
@Override
public int getItemCount() {
return 30;
}
}
这是主要活动:
package com.example.ringtone2021;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RingTonesDao ringTonesDao;
private RecyclerView recyclerView;
private RingTonesAdapter ringTonesAdapter = new RingTonesAdapter();
private TextView forexample;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
forexample = findViewById(R.id.forexample);
recyclerView = findViewById(R.id.rv_main);
recyclerView.setAdapter(ringTonesAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this, RecyclerView.VERTICAL, false));
ringTonesDao = AppDatabase.getAppDatabase(this).getRingtonesDao();
RingTones ringTones = new RingTones("reza", "alavi");
ringTonesDao.add(ringTones);
ringTones = new RingTones("ali", "alavi");
ringTonesDao.add(ringTones);
ringTones = new RingTones("ali", "alavi");
ringTonesDao.add(ringTones);
ringTones = new RingTones("ali", "alavi");
ringTonesDao.add(ringTones);
ringTones = new RingTones("ali", "alavi");
ringTonesDao.add(ringTones);
ringTones = new RingTones("ali", "alavi");
ringTonesDao.add(ringTones);
}
}
这是铃声:
package com.example.ringtone2021;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
@Entity(tableName = "tbl_ringtones")
public class RingTones {
@PrimaryKey(autoGenerate = true)
private Long id;
private String musicNames;
private String musicAddress;
@ColumnInfo(name = "favorites")
private boolean isFavorite;
public RingTones(String musicNames, String musicAddress) {
this.musicNames = musicNames;
this.musicAddress = musicAddress;
this.isFavorite = false;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMusicNames() {
return musicNames;
}
public void setMusicNames(String musicNames) {
this.musicNames = musicNames;
}
public String getMusicAddress() {
return musicAddress;
}
public void setMusicAddress(String musicAddress) {
this.musicAddress = musicAddress;
}
public boolean isFavorite() {
return isFavorite;
}
public void setFavorite(boolean favorite) {
isFavorite = favorite;
}
}
这是 RingTonesDao:
package com.example.ringtone2021;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
@Dao
public interface RingTonesDao {
@Insert
Long add(RingTones ringTones);
@Delete
int delete(RingTones ringTones);
@Update
int update(RingTones ringTones);
@Query("SELECT * FROM tbl_ringtones")
List<RingTones> getRingTones();
@Query("SELECT * FROM tbl_ringtones WHERE favorites>0 ")
List<RingTones> favorites();
@Query("DELETE FROM tbl_ringtones")
void deleteAll();
}
解决方案
在适配器中,您不会将元素设置到列表中。在适配器中创建方法,setData()
然后放入您的元素列表中。然后在onBindViewHolder()
设置所有值信息 xml 字段。
推荐阅读
- javascript - 在可重用组件中使用/访问了错误的 Ref
- dependencies - Debian 软件包的具体版本取决于
- .net - 使用 WCF 连接服务发送文件和 SOAP 消息
- shopify - 为什么这个导航菜单闪烁?
- ruby - 使用 Ruby 和 Graphql 跟踪状态
- javascript - 根据文本值更改 DIV 的颜色(来自外部源)
- javascript - NPM 包导致错误 Error: Cannot find module '/home/user/project/package.json' in webpack
- android - Flutter:向列表添加更多项目时,ListView.builder 分页页面刷新
- affdex-sdk - 有人可以帮我在哪里获得android AFFDEX SDK吗?我尝试下载但没有成功
- sensors - 如何在 GW3 上的 Tizen 原生应用程序中测量 SPO2