Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将音频索引存储在共享首选项中_Android_Listview_Android Fragments_Sharedpreferences - Fatal编程技术网

Android 将音频索引存储在共享首选项中

Android 将音频索引存储在共享首选项中,android,listview,android-fragments,sharedpreferences,Android,Listview,Android Fragments,Sharedpreferences,我有一个铃声列表视图,在我的主片段中的每一行都有一个书签图标。我还有另一个片段来展示它里面最受欢迎的铃声。 当我点击一个项目将其标记为收藏夹时,它将正常工作,所选项目将成功添加到我的收藏夹列表片段中。但问题是这不适用于铃声(songID)。例如,如果我选择项目#2,它将在收藏夹片段中添加项目#2,但它将播放第一个原始音频 在我的主要片段中 private final int[] songID = { R.raw.aaa, R.raw.bbb, R.raw.ccc}; private List

我有一个铃声列表视图,在我的主片段中的每一行都有一个书签图标。我还有另一个片段来展示它里面最受欢迎的铃声。 当我点击一个项目将其标记为收藏夹时,它将正常工作,所选项目将成功添加到我的收藏夹列表片段中。但问题是这不适用于铃声(
songID
)。例如,如果我选择项目#2,它将在收藏夹片段中添加项目#2,但它将播放第一个原始音频

在我的主要片段中

private final int[] songID = { R.raw.aaa, R.raw.bbb, R.raw.ccc}; 

private List<ProductLight> songList = new ArrayList<ProductLight>();

    ProductLight product1 = new ProductLight(1,"Song Title 1");
    ProductLight product2 = new ProductLight(2,"Song Title 2");
    ProductLight product3 = new ProductLight(3,"Song Title 3");

    songList = new ArrayList<ProductLight>();
    songList.add(product1);
    songList.add(product2);
    songList.add(product3);
private final int[] songID = { R.raw.aaa, R.raw.bbb, R.raw.ccc}; 

private List<ProductLight> songList = new ArrayList<ProductLight>();

songList = sharedPreference.getFavorites();
在我最喜欢的片段中

private final int[] songID = { R.raw.aaa, R.raw.bbb, R.raw.ccc}; 

private List<ProductLight> songList = new ArrayList<ProductLight>();

    ProductLight product1 = new ProductLight(1,"Song Title 1");
    ProductLight product2 = new ProductLight(2,"Song Title 2");
    ProductLight product3 = new ProductLight(3,"Song Title 3");

    songList = new ArrayList<ProductLight>();
    songList.add(product1);
    songList.add(product2);
    songList.add(product3);
private final int[] songID = { R.raw.aaa, R.raw.bbb, R.raw.ccc}; 

private List<ProductLight> songList = new ArrayList<ProductLight>();

songList = sharedPreference.getFavorites();
private final int[]songID={R.raw.aaa,R.raw.bbb,R.raw.ccc};
private List songList=new ArrayList();
songList=SharedReference.getFavorites();
共享首选项

public class SharedPreference_light {

public static final String PREFS_NAME = "Light_Products";
public static final String FAVORITES = "Favorite_Tones_Light";

SharedPreferences settings;
SharedPreferences.Editor editor;
Gson gson = new Gson();

public SharedPreference_light(Context context) {
    settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    editor = settings.edit();
}

// This four methods are used for maintaining favorites.
public void saveFavorites(List<ProductLight> favorites) {
    String jsonFavorites = gson.toJson(favorites);
    editor.putString(FAVORITES, jsonFavorites);
    editor.apply();
}

public void addFavorite(ProductLight product) {
    List <ProductLight> favorites = getFavorites();
    if (favorites == null)
        favorites = new ArrayList<ProductLight>();
    favorites.add(product);
    saveFavorites(favorites);
    Log.w("addPrefLog", favorites.toString());
}

public void removeFavorite(ProductLight product) {
    ArrayList <ProductLight> favorites = getFavorites();
    if (favorites != null) {
        favorites.remove(product);
        saveFavorites(favorites);
    }
}

public ArrayList <ProductLight> getFavorites() {
    List<ProductLight> favorites;
    if (settings.contains(FAVORITES)) {
        String jsonFavorites = settings.getString(FAVORITES, null);
        ProductLight[] favoriteItems = gson.fromJson(jsonFavorites, ProductLight[].class);
        favorites = Arrays.asList(favoriteItems);
        favorites = new ArrayList <ProductLight> (favorites);
    } else
        return null;

    return (ArrayList <ProductLight> ) favorites;
    }
 }
public class ProductLight {

private String title;
private int id;
private ArrayList<String> genre;

public ProductLight(int id,String name,ArrayList<String> genre){
    this.title = name;
    this.id = id;
    this.genre = genre;
}

public boolean paused = true;

private String Tag;
public String getTag() {
    return Tag;
}
public void setTag(String tag) {
    Tag = tag;
}

private int favId;
public int getFavId() {
    return favId;}
public void setFavId(int favId) {
    this.favId = favId;
}

public String getTitle() {
    return title;
}
public void setTitle(String name) {
    this.title = name;
}
public int getYear() {
    return id;
}
public ArrayList<String> getGenre() {
    return genre;
}
public void setGenre(ArrayList<String> genre) {
    this.genre = genre;
}



@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + id;
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    ProductLight other = (ProductLight) obj;
    if (id != other.id)
        return false;
    return true;
}

@Override
public String toString() {
    return "Product [id=" + id + ", name=" + title + ", genre="
            + genre + "]";
    }
}
公共类共享参考灯{
公共静态最终字符串PREFS_NAME=“Light_Products”;
public static final String FAVORITES=“Favorite\u Tones\u Light”;
共享引用设置;
SharedReferences.Editor;
Gson Gson=新的Gson();
公共共享参考灯(上下文){
设置=context.getSharedReferences(PREFS\u NAME,context.MODE\u PRIVATE);
editor=settings.edit();
}
//这四种方法用于维护收藏夹。
公共void保存收藏夹(列出收藏夹){
字符串jsonFavorites=gson.toJson(收藏夹);
putString(收藏夹,jsonFavorites);
editor.apply();
}
public void addFavorite(ProductLight产品){
列出收藏夹=getFavorites();
如果(收藏夹==null)
收藏夹=新的ArrayList();
收藏。添加(产品);
保存收藏夹(收藏夹);
w(“addPrefLog”,favorites.toString());
}
public void removeFavorite(ProductLight产品){
ArrayList favorites=getFavorites();
如果(收藏夹!=null){
收藏。删除(产品);
保存收藏夹(收藏夹);
}
}
公共阵列列表getFavorites(){
列出收藏夹;
如果(设置.包含(收藏夹)){
String jsonFavorites=settings.getString(收藏夹,null);
ProductLight[]favoriteItems=gson.fromJson(jsonFavorites,ProductLight[].class);
收藏夹=数组.asList(收藏夹项);
收藏夹=新的阵列列表(收藏夹);
}否则
返回null;
返回(ArrayList)收藏夹;
}
}
模型类

public class SharedPreference_light {

public static final String PREFS_NAME = "Light_Products";
public static final String FAVORITES = "Favorite_Tones_Light";

SharedPreferences settings;
SharedPreferences.Editor editor;
Gson gson = new Gson();

public SharedPreference_light(Context context) {
    settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    editor = settings.edit();
}

// This four methods are used for maintaining favorites.
public void saveFavorites(List<ProductLight> favorites) {
    String jsonFavorites = gson.toJson(favorites);
    editor.putString(FAVORITES, jsonFavorites);
    editor.apply();
}

public void addFavorite(ProductLight product) {
    List <ProductLight> favorites = getFavorites();
    if (favorites == null)
        favorites = new ArrayList<ProductLight>();
    favorites.add(product);
    saveFavorites(favorites);
    Log.w("addPrefLog", favorites.toString());
}

public void removeFavorite(ProductLight product) {
    ArrayList <ProductLight> favorites = getFavorites();
    if (favorites != null) {
        favorites.remove(product);
        saveFavorites(favorites);
    }
}

public ArrayList <ProductLight> getFavorites() {
    List<ProductLight> favorites;
    if (settings.contains(FAVORITES)) {
        String jsonFavorites = settings.getString(FAVORITES, null);
        ProductLight[] favoriteItems = gson.fromJson(jsonFavorites, ProductLight[].class);
        favorites = Arrays.asList(favoriteItems);
        favorites = new ArrayList <ProductLight> (favorites);
    } else
        return null;

    return (ArrayList <ProductLight> ) favorites;
    }
 }
public class ProductLight {

private String title;
private int id;
private ArrayList<String> genre;

public ProductLight(int id,String name,ArrayList<String> genre){
    this.title = name;
    this.id = id;
    this.genre = genre;
}

public boolean paused = true;

private String Tag;
public String getTag() {
    return Tag;
}
public void setTag(String tag) {
    Tag = tag;
}

private int favId;
public int getFavId() {
    return favId;}
public void setFavId(int favId) {
    this.favId = favId;
}

public String getTitle() {
    return title;
}
public void setTitle(String name) {
    this.title = name;
}
public int getYear() {
    return id;
}
public ArrayList<String> getGenre() {
    return genre;
}
public void setGenre(ArrayList<String> genre) {
    this.genre = genre;
}



@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + id;
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    ProductLight other = (ProductLight) obj;
    if (id != other.id)
        return false;
    return true;
}

@Override
public String toString() {
    return "Product [id=" + id + ", name=" + title + ", genre="
            + genre + "]";
    }
}
公共类产品灯{
私有字符串标题;
私有int-id;
私人阿雷亚主义流派;
公共产品灯(int-id、字符串名称、ArrayList类型){
this.title=名称;
this.id=id;
这个。流派=流派;
}
公共布尔值=真;
私有字符串标签;
公共字符串getTag(){
返回标签;
}
公共void setTag(字符串标记){
标签=标签;
}
私人int favId;
公共int getFavId(){
返回favId;}
公共无效设置favId(内部favId){
this.favId=favId;
}
公共字符串getTitle(){
返回标题;
}
public void setTitle(字符串名称){
this.title=名称;
}
公共int getYear(){
返回id;
}
公共ArrayList getgreen(){
回归体裁;
}
公共无效集合类型(ArrayList类型){
这个。流派=流派;
}
@凌驾
公共int hashCode(){
最终整数素数=31;
int结果=1;
结果=素数*结果+id;
返回结果;
}
@凌驾
公共布尔等于(对象obj){
if(this==obj)
返回true;
if(obj==null)
返回false;
如果(getClass()!=obj.getClass())
返回false;
ProductLight其他=(ProductLight)obj;
if(id!=其他.id)
返回false;
返回true;
}
@凌驾
公共字符串toString(){
return“Product[id=“+id+”,name=“+title+”,genre=”
+体裁+“]”;
}
}
我不知道该怎么做,你能帮帮我吗?

正如你所说:

当我点击一个项目将其标记为收藏夹时,它将正常工作,所选项目将成功添加到我的收藏夹列表片段中

然后尝试将另一个参数作为音频资源添加到
ProductLight

    private int res;
    public int getRes() {
    return res;
}

public ProductLight(..... int res){
this.res= res;
}

并将它们添加到您的列表中

ProductLight product1 = new ProductLight(1,"Song Title 1, R.raw.youraudio1");
ProductLight product2 = new ProductLight(2,"Song Title 2, R.raw.youraudio2");
ProductLight product3 = new ProductLight(3,"Song Title 3, R.raw.youraudio3");

您能添加方法SharedReference.addFavorite的代码吗?ProductLight的第一个值是整数,这是歌曲的索引吗?如果是,这应该从0开始,如果不是,那么它有什么用。@Avi这些是铃声的id,您的意思是我应该在ProductLight构造函数中为铃声添加另一个int!?哪个身份证?你从哪里弄来的?