【发布时间】:2021-11-26 21:23:46
【问题描述】:
我已经尝试了几天,但我无法显示这个 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;
}
}
这是 MainActivity:
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();
}
【问题讨论】:
-
您必须在成功加载所有铃声后设置适配器,并且我看到您还没有在适配器中传递铃声。
标签: android database android-recyclerview android-room display