راهنمایی در ایجاد لیستنر
سلام دوستان
تا بحال بسیار نیاز به استفاده از لیستنر داشته ام اما هنوز نتونستم یک لیستنر بنویسم!!
داخل یک اکتیویتی یک باتن دارم، با کلیک روی باتن شمارنده ای شروع به حرکت میکنه، میخوام زمانی که مثلا شمارنده به عدد ده رسید داخل اکتیویتی دیگه یه تابع اجرا بشه، ممنون میشم با یک مثال ساده یک لیستنر برام بنویسید تا نحوه ایجاد لیستنر دستم بیاد
با تشکر
سلام
من فرض را روی این گذاشتم که منظور شما از شمارنده یک تایمر هست :
این کد تایمر :
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
int count = 0;
while (true) {
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
count++;
if (count == 10) {
Intent intent = new Intent(ActivityMain.this, ActivityDoWork.class);
intent.putExtra("RUN_FUNCTION", true);
ActivityMain.this.startActivity(intent);
ActivityMain.this.finish();
}
}
}
});
این هم کد Listener که روی یک Button ست کردم :
btnStartCount.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
thread.start();
}
});
این هم کد دریافت دستور اجرای تابع در اکتیویتی مورد نظر :
Bundle extras = getIntent().getExtras();
if (extras != null) {
if (extras.containsKey("RUN_FUNCTION")) {
if (extras.getBoolean("RUN_FUNCTION")) {
function();
}
}
}
که function تابع مورد نظر ما است.
سلام
من روش زیر به ذهنم رسید که تست هم کردم جواب داد ،البته حتما روش های دیگری هم هست:
در داخل کلاس آداپتر ،فیلد و متد زیر را اضافه کنید :
private TextView textView;
public void setTextView(TextView textView) {
this.textView = textView;
}
تکه کد زیر را هم در داخل متد fill اضافه کنید :
btnSetText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (textView != null) {
textView.setText(item.title);
}
}
});
تکه کد زیر را هم به اکتیویتی که آداپتر و لیست ویو را تعریف کردید اضافه کنید ،بعد از تعریف آداپتر :
adapter.setTextView(txtCaption);
فکرکنم با کد زیر مشکلتون حل بشه :
کد زیر را به اکتیویتی اضافه کنید :
private static int value;
public static int getValue() {
return value;
}
در کد پست بالا هم ،کد زیر را :
textView.setText(item.title);
به :
textView.setText("" + ActivityMain.getValue());
تغییر بدید.
value را در اکتیویتی هرجا که بخواید میتونید مقدار دهی کنید.
البته این روشی بود که به ذهن من رسید حتما راه های بهتری هم هست
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .