Адаптеры не работают в runOnUiThread в Android

У меня есть ошибка для управления адаптерами во фрагменте. Мой сценарий: в деятельности есть TabLayout а также ViewPager для создания вкладки пролистывания.

Внутри каждого корма есть RecyclerView а также Adapter, На самом деле нам не нужно использовать runOnUiThread, но в этом методе нам нужен runOnUiThread для управления представлениями.

   navinAsync.getImageGalleries(paramsMap, new RequestListener() {
        @Override
        public void onResponse(final String response) {
            hideProgressBarScreenShots();


            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    try {
                        String message=parseAdapterMessage(response);
                        productScreenShots = getAllAppProductScreenShots(message);
                        LinearLayoutManager layoutManager
                                = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
                        app_images.setLayoutManager(layoutManager);
                        app_images.setHasFixedSize(true);
                        ApplicationImagesRecyclerListAdapter listAdapter = new ApplicationImagesRecyclerListAdapter(
                                getActivity(), productScreenShots);
                        app_images.setAdapter(listAdapter);
                        app_images.setFocusable(true);

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });




        }

        @Override
        public void onError(String response) {
            hideProgressBarScreenShots();
            Log.e("","");



        }
    });

public List<ProductScreenShot> getAllAppProductScreenShots(String data) {


    List<ProductScreenShot> productScreenShotList = new ArrayList<>();

    try {

        JSONArray array = new JSONArray(data);


        for (int i = 0; i < array.length(); i++) {
            JSONObject jsonObject = array.getJSONObject(i);
            ProductScreenShot productScreenShot = new ProductScreenShot();


            productScreenShot.setProductPackageName(jsonObject.getString("product_packageName"));
            productScreenShot.setScreenShoturl(jsonObject.getString("imageUrl"));
            productScreenShot.setThumbnailUrl(jsonObject.getString("thumbnailURL"));

            productScreenShotList.add(productScreenShot);

        }


    } catch (JSONException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return productScreenShotList;
}

и адаптер:

public class ApplicationImagesRecyclerListAdapter extends DefaultRecyclerViewAdapter<ApplicationImagesRecyclerListAdapter.ViewHolder> {

    private List<ProductScreenShot> productScreenShots;
    private Context context;
    private ViewPager viewPager;
    public ApplicationImagesRecyclerListAdapter(Context context, List<ProductScreenShot> productScreenShots , ViewPager viewPager) {
        super(context);
        this.context = context;
        this.productScreenShots = productScreenShots;
        this.viewPager = viewPager;
    }

    public ApplicationImagesRecyclerListAdapter(Context context, List<ProductScreenShot> productScreenShots) {
        super(context);
        this.context = context;
        this.productScreenShots = productScreenShots;
    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.application_image, null);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {

        ProductScreenShot productScreenShot=productScreenShots.get(position);

        ImageView appImage = holder.appImage;
        Designer designer = new Designer(context);
        designer.setViewBackground(appImage, designer.getLightGraySelector(), true, BasicDesigner.RECTANGLE, 0);
        if (productScreenShot.getScreenShoturl().equals("null") || productScreenShot.getScreenShoturl() == null) {
            appImage.setImageResource(R.mipmap.ic_launcher);
        } else {
            Picasso.with(context).load(productScreenShot.getScreenShoturl()).error(R.mipmap.ic_launcher).into(appImage);
        }


    }

    @Override
    public int getItemCount() {
        return productScreenShots.size();
    }


    public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView appImage;

        public ViewHolder(View itemView) {
            super(itemView);
            appImage = (ImageView) itemView.findViewById(R.id.app_image);
        }
    }
}

этот код иногда работает, а иногда не работает,

В чем проблема при работе с runOnUiThread с адаптерами во фрагменте?

0 ответов

Другие вопросы по тегам