Her liste öğesi için favori bir düğmeyle sahip olan bir listview
ürünüm var; tıklatıldığında liste öğesini fav9rites olarak adlandırılan başka bir etkinliğe eklemelisiniz. Sık kullanılanlar eklemek için listview
ve Sharedpreference
için Baseadapter
kullanıyorum. Favori düğmesini tıklattığımda, sık kullanılanlar etkinliğimde liste görünümü öğesi ekleniyor ancak şu sorunlarla karşılaşıyorum:Liste görünümünde sık kullanılanlar düğmesi ekleme
1) tıklatıldığında favori düğmesi, liste öğesinin eklendiğini belirten Favoriler. Bu olur ama ben aktiviteyi kapatıp tekrar geri geldiğimde, düğme sıkıcı aktivitemdeki liste öğesine uzun basıldığında,
2) geri dönüyorsa, liste öğesi favorilerden kaldırılmalı ama bu değil olay.
Umut herkes Kodum
sorum anlama
benim taban adaptörü
public View getView(final int position, View view, ViewGroup parent)
{
final ViewHolder holder;
if(view == null){
holder = new ViewHolder();
view = inflater.inflate(R.layout.beg_list_item,null);
holder.listHeading = (TextView) view.findViewById(R.id.beg_list_itemTextView);
// holder.listHash = (TextView) view.findViewById(R.id.listview_hashtags);
holder.alphabetList = (ImageView) view.findViewById(R.id.beg_list_itemImageView);
holder.favoriteImg = (ImageView) view.findViewById(R.id.favbtn);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
CodeList code = (CodeList) getItem(position);
holder.listHeading.setText(codeList.get(position).getListHeading());
imageLoader.DisplayImage(codeList.get(position).getAlphabetimg(),
holder.alphabetList);
// holder.listHash.setText(codeList.get(position).getListHashTags());
if (checkFavoriteItem(code)) {
holder.favoriteImg.setImageResource(R.drawable.favorite);
holder.favoriteImg.setTag("yes");
} else {
holder.favoriteImg.setImageResource(R.drawable.unfavorite);
holder.favoriteImg.setTag("no");
}
view.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0){
Intent intent = new Intent(context, SingleItemView.class);
//intent.putExtra("listheading",
// (codeList.get(position).getListHeading()));
//intent.putExtra("alphabetimg",
// (codeList.get(position).getAlphabetimg()));
intent.putExtra("demovideo",
(codeList.get(position).getDailogdemovideo()));
intent.putExtra("download",
(codeList.get(position).getDownloadCode()));
// Start SingleItemView Class
context.startActivity(intent);
}
});
final ImageView favoritesbutton = (ImageView) view.findViewById(R.id.favbtn);
favoritesbutton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
String tag = favoritesbutton.getTag().toString();
if(tag.equalsIgnoreCase("no")){
shrdPrefence.addFavorite(context, codeList.get(position));
Toast.makeText(context, R.string.fav_added, Toast.LENGTH_SHORT).show();
favoritesbutton.setTag("yes");
favoritesbutton.setImageResource(R.drawable.favorite);
}else{
shrdPrefence.removeFavorite(context, codeList.get(position));
favoritesbutton.setTag("no");
favoritesbutton.setImageResource(R.drawable.unfavorite);
Toast.makeText(context, R.string.fav_removed, Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
//Checks whether a particular product exists in SharedPreferences*/
public boolean checkFavoriteItem(CodeList checkCode) {
boolean check = false;
List<CodeList> favorites = shrdPrefence.getFavorites(context);
if (favorites != null) {
for (CodeList code : favorites) {
if (code.equals(checkCode)) {
check = true;
break;
}
}
}
return check;
}
public void add(CodeList code) {
codeList.add(code);
notifyDataSetChanged();
}
public void remove(CodeList code) {
codeList.remove(code);
notifyDataSetChanged();
}
sharedpreference.java
public class SharedPreference
{
public static final String PREFS_NAME = "MY_APP";
public static final String FAVORITES = "code_Favorite";
public SharedPreference(){
super();
}
public void saveFavorites(Context context, List<CodeList> favorites){
SharedPreferences settings;
Editor editor;
settings = context.getSharedPreferences(PREFS_NAME,
Context.MODE_PRIVATE);
editor = settings.edit();
Gson gson = new Gson();
String jsonFavorites = gson.toJson(favorites);
editor.putString(FAVORITES, jsonFavorites);
editor.commit();
}
public void addFavorite(Context context, CodeList code){
List<CodeList> favorites = getFavorites(context);
if(favorites == null)
favorites = new ArrayList<CodeList>();
favorites.add(code);
saveFavorites(context,favorites);
}
public void removeFavorite(Context context, CodeList code) {
ArrayList<CodeList> favorites = getFavorites(context);
if (favorites != null) {
favorites.remove(code);
saveFavorites(context, favorites);
}
}
public ArrayList<CodeList> getFavorites(Context context) {
SharedPreferences settings;
List<CodeList> favorites;
settings = context.getSharedPreferences(PREFS_NAME,
Context.MODE_PRIVATE);
if (settings.contains(FAVORITES)) {
String jsonFavorites = settings.getString(FAVORITES, null);
Gson gson = new Gson();
CodeList[] favoriteItems = gson.fromJson(jsonFavorites,
CodeList[].class);
favorites = Arrays.asList(favoriteItems);
favorites = new ArrayList<CodeList>(favorites);
} else
return null;
return (ArrayList<CodeList>) favorites;
}
}
benim favorite..java
public class MyFavActivity extends Activity
{
SharedPreference shrdPrfence;
List<CodeList> favorites;
FinalAdapter fnlAdpter;
Context context = this.context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fav_layout);
shrdPrfence = new SharedPreference();
favorites = shrdPrfence.getFavorites(MyFavActivity.this);
if(favorites == null){
Dialog dialog = new Dialog(MyFavActivity.this);
dialog.setTitle(R.string.nofav_title);
dialog.show();
}else{
if(favorites.size() == 0){
Dialog dialog = new Dialog(MyFavActivity.this);
dialog.setTitle(R.string.nofav_title);
dialog.show();
}
ListView favList = (ListView) findViewById(R.id.fav_layoutListView);
if(favorites != null){
fnlAdpter = new FinalAdapter(MyFavActivity.this, favorites);
favList.setAdapter(fnlAdpter);
favList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View arg1,
int position, long arg3) {
}
});
favList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
ImageView button = (ImageView) view
.findViewById(R.id.favbtn);
String tag = button.getTag().toString();
if (tag.equalsIgnoreCase("no")) {
shrdPrfence.addFavorite(MyFavActivity.this,
favorites.get(position));
Toast.makeText(
MyFavActivity.this,
R.string.fav_added,
Toast.LENGTH_SHORT).show();
button.setTag("yes");
button.setImageResource(R.drawable.favorite);
} else {
shrdPrfence.removeFavorite(MyFavActivity.this,
favorites.get(position));
button.setTag("no");
button.setImageResource(R.drawable.unfavorite);
fnlAdpter.remove(favorites.get(position));
Toast.makeText(
MyFavActivity.this,
R.string.fav_removed,
Toast.LENGTH_SHORT).show();
}
return true;
}
});
}
}
}
}
'code.equals (checkCode)' çalışıp çalışmadığını kontrol ettiniz mi? Bunun için '.equals' yöntemini uyguladınız mı? – Roshan
@Roshan Evet kontrol ettim .it çalışıyor – user5524159