بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
ایجاد سیستم like (حل شده)
سلام دوستان
من داخل برنامم سیستم like گذاشتم که هر بار روی شکل
کلیک شد اون به حالت تو پر در میاد، اما زمانی که برمیگردم و دوباره وارد صفحه میشم شکل از حالت تو پر در اومده!! از sharedPreferences هم استفاده کردم اما فرقی نکرد.
ممنون میشم راهنماییم کنید
+1
0
خوب ما که نمیدونیم شما چی نوشتید حتما یه جای کدا یه اشکالی داره دیگه. باید شرط بذارید اگر مثلا مقدار متغیر یا preference یا هر چی مثلا true بود شکل توپر رو روی imageView ست کنه در غیر اینصورت شکل غیرتوپر رو. اگر این کارو کردید و نشده باید کدا رو بذارید تا از دوستان اگر کسی تونست مشکلتون رو حل کنه. (11 سال پیش)
0
0
کدم رو پایین میزارم (11 سال پیش)
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
SaeiD-as
11 سال پیش
0
0
private void checkLike() {
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("brand_id", "" + G.selectedBrand.id));
SharedPreferences.Editor editor = G.preferences.edit();
boolean likeCheck = G.preferences.getBoolean("" + G.selectedBrand.id, false);
final ImageView imgLikeDetail = (ImageView) findViewById(R.id.imgLikeDetail);
if (likeCheck == false) {
imgLikeDetail.setImageResource(R.drawable.icon_like);
editor.putBoolean("" + G.selectedBrand.id, true);
G.selectedBrand.like += 1;
Toast.makeText(G.currentActivity, "Liked", Toast.LENGTH_SHORT).show();
} else {
imgLikeDetail.setImageResource(R.drawable.icon_unlike);
editor.putBoolean("" + G.selectedBrand.id, false);
G.selectedBrand.like -= 1;
Toast.makeText(G.currentActivity, "unLiked", Toast.LENGTH_SHORT).show();
}
editor.commit();
params.add(new BasicNameValuePair("brand_like", "" + G.selectedBrand.like));
Webservice.readUrl("http://192.168.56.1/negahe-novin/?action=like", params);
}
}
راستش من نمیدونم کداتون چه شکلیه ولی در تمام ImageView هایی که آیکون در اون ها هست باید این شرط رو بذارید که اگر برند مربوط به اون ImageView لایک شده بود آِیکون لایک رو ست کنه در غیر این صورت unlike. نباید سخت باشه. فکر کنم اگر داخل onCreate هم بذارید مشکلی نداشته باشه. توی onResume هم باید کار کنه. (11 سال پیش)
اون تابعو نباید فراخوانی کنید. اون تابع فقط واسه کلیک کردن جواب میده. شاید اگر کداتونو میذاشتید راحت تر میشد راهنمایی کرد. اما کاری که میتونید بکنید اینه که مقدار سورس ImageView رو از xml ست نکنید. بلکه توی کد برنامه واسه تک تک ImageView ها شرط بذارید و مقدارش رو با همون imgLikeDetail.setImageResource(R.drawable.icon_like); ست کنید. آیتم هاتون داخل لیست ویو هستن یا داخل خود اکتیویتی؟ (11 سال پیش)
پاسخ به سوال
SaeiD-as
11 سال پیش
0
0
کد کاملم اینه:
public class ActivityDetail extends EnhancedActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
LinearLayout linearLikeDetail = (LinearLayout) findViewById(R.id.linearLikeDetail);
linearLikeDetail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
boolean likeCheck = G.preferences.getBoolean("" + G.selectedBrand.id, false);
if (G.preferences.getBoolean("IS_SIGNE", false) == false) {
Toast.makeText(G.currentActivity, R.string.like_signin, Toast.LENGTH_SHORT).show();
} else {
checkLike();
}
}
});
}
یعنی کل کدا همینه؟ فقط یه دونه ImaveView واسه لایک داخل صفحه دارید؟! اون وقت G.selectedBrand از کجا پر میشه؟ با این اطلاعات محدود من این پیشنهادو میتونم بدم همین چند خط کد رو بذارید داخل onCreate ببینید کار میکنه:
ImageView imgLikeDetail = (ImageView) findViewById(R.id.imgLikeDetail);
boolean likeCheck = G.preferences.getBoolean("" + G.selectedBrand.id, false);
if(likeCheck){
imgLikeDetail.setImageResource(R.drawable.icon_like);
}
else{
imgLikeDetail.setImageResource(R.drawable.icon_unlike);
} (11 سال پیش)
پاسخ به سوال
r22222
11 سال پیش
+3
0
ImageView imgLikeDetail = (ImageView) findViewById(R.id.imgLikeDetail);
if(G.preferences.getBoolean("" + G.selectedBrand.id, false)){
imgLikeDetail.setImageResource(R.drawable.icon_like);
}
else{
imgLikeDetail.setImageResource(R.drawable.icon_unlike);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .