با سلام و عرض ادب
استاد ما ی متد تعریف کردیم و توی اجرا بهمون گفت که این چون تو ترد اصلیه کند کار میکنه،بعد اومدیم و طبق اموزش خودتون در جلسه اول پیشرفته،ی شی از کلاس ترد ساختیم و بقیه ماجرا،حالا انگار با یک بار کلیک روی دکمه ک کار انجام بده،یه بار توسط main thread و یه باز توسط تردی ک ساختیم باز میشه(دکممون برای رفتن به ی اکتیویتی دیگست).مشکل چیه؟
بدون دیدن کدتون نمیشه گفت مشکل از کجاست.
public class fragment2 extends Fragment {
private ArrayList<String> strings = new ArrayList<>();
public ListView lst;
private Context context;
private DatabaseHandler db;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment2, container, false);
lst = (ListView) v.findViewById(R.id.lst);
set();
lst.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
switch (i) {
case 0:
Intent intent = new Intent(getContext(), ASS.class);
startActivity(intent);
case 1:
Intent intent1 = new Intent(getContext(), ASS.class);
startActivity(intent1);
}
}
});
thread.start();
}
});
return v;
}
private void set() {
db = new DatabaseHandler(getContext());
db.open();
strings = db.arrayList();
db.close();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, strings);
lst.setAdapter(adapter);
}
}
این کدمونه،و ما در واقع میایم این فرگمنت رو return میکنیم برای استفاده در viewpager
این کاری که شما انجام دادین نیاز به ترد جداگانه نداره. خطایی که میده رو نادیده بگیرین. ضمناً بهتره بجای اینکه روی onItemClickListener کار کنین، توی آداپتر خودتون اینکار رو انجام بدین. توی XML لیاوت، به والد اصلی id بدین و برای همون عنصر، setOnClickListener رو توی آداپتر صدا بزنید. درضمن بهتره بجای ListView با RecyclerView کار کنید. لیستویو دیگه منسوخ شده یه جورایی.