مشکل در setText کردن یک مقدار در TextView
سلام دوستان
شاید سوال تکراری باشه. ولی از دیروز دارم سرچ میکنم تو سایت ولی به نتیجه نرسیدم
من سه تا TextView دارم که یک عمل محاسباتی روی دوتاشون انجام میشه و نتیجه توی سومی قرار داده میشه.
یه دکمه ویرایش وجود داره که امکان ویرایش مقدار یکی از TextViewها رو فراهم میکنه. ولی با ویرایش مقدار TextView، مقدار جدید محاسبات که TextView سوم هست، رفرش نمیشه و حتما باید از اکتیویتی خارج شد و بعد از وارد شدن، مقدار جدید نمایش داده میشه.
راهی هست که همزمان با کلیک روی دکمه ویرایش، مقدار TextView سومی رفرش بشه؟
این کدیه که واسه محاسبه ضرب نوشتم:
int value = Integer.parseInt(txtarticlevalue.getText().toString()); int price = Integer.parseInt(txtprice.getText().toString()); int mul = (price * value); String str = String.valueOf(mul); txttotalprice.setText(str);
ولی وقتی این کد رو هم توی دکمه ویرایش مینویسم، انجام نمیشه
اینم کد دکمه ویرایشم. غیر از این کدی که به این ربطی داشته باشه ندارم. ولی نمیدونم چرا رفرش نمیشه.
حالا نمیدونم کدی غیر این هست که ننوشتم یا نه
btncheck.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
txtarticlevalue.setText(txtvalue.getText());
int value = Integer.parseInt(txtarticlevalue.getText().toString());
int price = Integer.parseInt(txtprice.getText().toString());
int mul = (price * value);
String str = String.valueOf(mul);
txttotalprice.setText(str);
adapter.notifyDataSetChanged();
}
});
به طور کلی ، وقتی ما یک شی را setText کنیم ، در Render بعدی صفحه اعمال میشه ، حالا اگه شما برنامه نویسی تون Multi Threading نباشه ، زمان این Render بیشتر میشه و در لاگ هم این پیام رو می بینید !
N Frame Skipped !
و N تعداد فریم هایی هست که به دلیل پردازش سنگین در Thread اصلی فرصت پردازش رو نداره !
( برای اطلاعات بیشتر ، به سوال من در این مورد مراجعه کنید ! )
اما در حالت کلی به نظر نمیاد مشکل این باشه ، این بار با یک متن ساده (String) تست کنید ، ببینید جواب میده ؟
Textview.setText("Some Text To Test !");
بعضی وقت ها برای من پیش اومده اگه متنی که میخوام Set کنم "" باشه ، کلا اون خط تاثیری نداره !
آقا احسان HTML نیست که ! ، خودش رفرش میشه و اصطلاحا بهش Render میگن.
اما مشکل شما در Parse کردن هاست ، وقتی عدد رو int کردید برای String کردن به این شکل عمل کنید
String value = "" + int;
اما شما اینطور عمل کردید
String str = String.valueOf(mul);
اما برای تست خروجی مقدار رو اینطوری ست کنید !
String value = "" + mul;
txttotalprice.setText(" Value is "+value );
حتما مشکل حل میشه !
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .