Страница 1 из 1

Получение инфы из AsycTask

Добавлено: 07 июн 2015, 15:27
Ivaner00
Доброго времени, делаю одно приложение. И возникла небольшая проблема.
AsyncTask не возвращает значение после того как отработал.

хотя, внутри все отрабатывается

Код откуда запускается AsynTask:

Код: Выделить всё

public class VideoInfActivityFragment extends Fragment {

    private static final String TAG = "CrossBill";
    String[] titles;
    String[] value;
    GridView mGridView;
    Spinner mVideoChoceSpiner;
    ArrayList<Videos> videos;
    VideoChoceAdapter videoChoceAdapter;
    View v;



    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        setRetainInstance(true);

        Bundle bundle = getArguments();
        if(bundle!=null){
            new CrossBillServiceTask().execute(bundle.getString("url"));
            new VideosTask().execute();
        }

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        v = inflater.inflate(R.layout.fragment_video_inf,
                container, false);
        Resources res = getResources();
        titles = res.getStringArray(R.array.titles);



        mGridView = (GridView)v
                .findViewById(R.id.gridView);

        mVideoChoceSpiner = (Spinner)v
                .findViewById(R.id.video_chose_spiner);

        mVideoChoceSpiner.setOnItemSelectedListener(listener);



        setupAdapter();

        return v;
    }

    Spinner.OnItemSelectedListener listener = new Spinner.OnItemSelectedListener(){



        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            View v = videoChoceAdapter.getView(position,view,parent);
            TextView txturl=(TextView)v.findViewById(R.id.textView0);
            Log.d(TAG,position +": " + txturl.getText().toString());


        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    };



    void setupAdapter(){

        if(getActivity()==null || mGridView == null || mVideoChoceSpiner==null)return;
        if(value!=null && videos!=null){
            ArrayList<VIdeoInfo>vIdeoInfos=new ArrayList<VIdeoInfo>();
            int leng = titles.length;
            for(int i=1;i<leng;i++)
            {

                vIdeoInfos.add(new VIdeoInfo(titles[i],value[i]));

            }
            new ImageTask((ImageView)v.findViewById(R.id.imageView)).execute(value[leng]);
            VideoInfoAdapter videoInfo=new VideoInfoAdapter(getActivity(),vIdeoInfos);
            mGridView.setAdapter(videoInfo);

            videoChoceAdapter = new VideoChoceAdapter(getActivity(),videos);
            mVideoChoceSpiner.setAdapter(videoChoceAdapter);

        }else {
            mGridView.setAdapter(null);
        }
    }

    private class VideosTask extends AsyncTask<Void,Void,ArrayList<Videos>>{

        @Override
        protected ArrayList<Videos> doInBackground(Void... params) {

            return new CrossBillService().getVideosChose();
        }

        protected void onPostExecute(ArrayList<Videos> alVideo){
            videos=alVideo;
            setupAdapter();
        }
    }

     private class CrossBillServiceTask extends AsyncTask
             <String,Void,String[]> {
         @Override
        protected String[] doInBackground(String ... params) {


            return new CrossBillService(params[0]).getVideoInfoItems();
        }

         @Override
         protected void onPostExecute(String[] items){
             value = items;
             setupAdapter();
         }

    }

    private class ImageTask extends AsyncTask<String,Void,Bitmap>{
        ImageView bmImage;

        public ImageTask(ImageView bmImage){
            this.bmImage = bmImage;
        }

        @Override
        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11=null;
            try{
                InputStream in = new URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error",e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result){
            bmImage.setImageBitmap(result);

        }



    }

Re: Получение инфы из AsycTask

Добавлено: 07 июн 2015, 16:03
Ivaner00
Проблему решил, всем спасибо