بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل در RecyCler View
سلام
من طبق این آموزش
یدونه RecyCler View درست کردم . یه مشکل دارم
وقتی که برنامه رو اجرا میکنم هیچی توی RecyCler View نیستش . حالا میرم یه Activity دیگه . دوباره برمیگردم میبینم اطلاعات هستش . نظر من اینه که دفعه اول اطلاعات پر میشه . ولی نشون نمیده . یعنی یه چیزی باید اضافه بشه . حالا نمیدونم چی . میشه کمک کنید منو
اینم کد :
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
getData();
mAdapter = new MyRecyclerViewAdapter(G.posts);
mRecyclerView.setAdapter(mAdapter);
RecyclerView.ItemDecoration itemDecoration =
new DividerItemDecoration(this, LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(itemDecoration);
0
0
متد getData . اطلاعات رو میخونه و توی G.posts میریزه (9 سال پیش)
0
0
دوستان کسی نمیدونه باید چکار کنم . خیلی عجیبه واقعا این مشکل (9 سال پیش)
+1
0
توی خط 5 دستور getData رو میدید و قبل از اینکه posts اطلاعات رو بگیره recyclerview رو ست کردید.
راه حل اول: میتونید میتونید کل کدها رو داخل ترد بذارید. داخل ترد کارها به ترتیبی که قرار میدید انجام میشه. یعنی تا کار اول تکمیل نشه کد به خط بعدی نمیره. (البته setAdapter رو باید در ترد UI انجام بدید)
راه حل دوم: داخل متد getData پس از اضافه شدن هر آیتم به لیست posts دستور adapter.notifyItemInserted رو صدا بزنید.
راه حل سوم: قبل از اینکه وارد متد تنظیم recyclerView بشید لیست posts رو تکمیل کرده باشید (9 سال پیش)
0
0
چطوری باید داخل ترد بزارم . همه چی شی گرا هستش . یعنی هر کدوم رو توی کلاس نوشتم (9 سال پیش)
0
0
این راه سوم رو میشه بیشتر توضیح بدید (9 سال پیش)
0
0
اینم بگم وقتی متد getData رو توی کلاس G میزارم همه چی درسته و نشون میده . فقط تو خود Activity main هستش که داستان دارم باهاش (9 سال پیش)
0
0
یعنی اینکه توی اکتیویتی قبلی یا توی کلاس G بصورت کامل لیست posts رو کامل کنی (9 سال پیش)
0
0
آخه من بخش مربوط به کامنت هم دارم . یعنی روی هر یک از آیتم های لیست ویو کلیک شد میره کامنت های مربوط به اون رو میاره . پس نمیشه توی اکتیویتی قبلی چیزی رو پر کنم . چون اصلا معلوم نیست که کاربر روی چی کلیک کرده . بهتر نیست از همون ترد استفاده کنم ؟ (9 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
محمد
9 سال پیش
+1
0
ترد ربطی به شی گرایی نداره
new Thread(new Runnable() {
@Override
public void run() {
getData();
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setHasFixedSize(true);
mAdapter = new MyRecyclerViewAdapter(G.posts);
runOnUiThread(new Runnable() {
@Override
public void run() {
mRecyclerView.setAdapter(mAdapter);
}
});
RecyclerView.ItemDecoration itemDecoration =
new DividerItemDecoration(this, LinearLayoutManager.VERTICAL);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.addItemDecoration(itemDecoration);
}
}).start();
فقط این روش یه مشکلی داره. تا getData به طور کامل انجام نشه recyclerView نمایش داده نمیشه. میتونی یه لودینگ بذاری. بهتره از روش 2 و 3 استفاده کنی
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .