0
메인 조각의 각 행에있는 북마크 아이콘이있는 벨소리 목록보기가 있습니다. 그리고 그 안에 선호하는 벨소리를 보여줄 다른 조각이 있습니다. 하나의 항목을 클릭하여 즐겨 찾기로 표시하면 정상적으로 작동하며 선택한 항목이 즐겨 찾기 목록 인 Fragment에 성공적으로 추가됩니다. 그러나이 문제는 벨소리 (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);
좋아하는 로직에 추가 :
@Override
public boolean favOnClick(int position , View v) {
ProductLight product = songList.get(position);
ImageView button = (ImageView) v.findViewById(R.id.favImageHive);
String tag = button.getTag().toString();
if (tag.equalsIgnoreCase("grey")) {
sharedPreference.addFavorite(product);
snackS("Added to Favorites");
button.setTag("red");
button.setImageResource(R.mipmap.bookmarked);
} else {
sharedPreference.removeFavorite(product);
button.setTag("grey");
button.setImageResource(R.mipmap.bookmark_border);
snackS("Removed from Favorites");
}
return true;
}
그리고 내 즐겨 찾기 조각
private final int[] songID = { R.raw.aaa, R.raw.bbb, R.raw.ccc};
private List<ProductLight> songList = new ArrayList<ProductLight>();
songList = sharedPreference.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 + "]";
}
}
내가, 당신이 나를 도울 수, 바로 그것을 만드는 방법을하시기 바랍니다 몰라? 당신이 언급 한 바와 같이
에 오디오 자원과 같은 다른 매개 변수를 추가하려고합니다. 여기에 addFavorite – Avi
ProductLight 첫 번째 값은 정수입니다 그 노래의 색인입니까? 예인 경우 0부터 시작해야하며 그렇지 않으면 사용은 무엇입니까? – Avi
@Avi 그 음색의 ID입니다. ProductLight 생성자에서 벨소리에 다른 int를 추가해야합니다. – Majid