Получение инфы из AsycTask
Добавлено: 07 июн 2015, 15:27
Доброго времени, делаю одно приложение. И возникла небольшая проблема.
AsyncTask не возвращает значение после того как отработал.
хотя, внутри все отрабатывается
Код откуда запускается AsynTask:
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);
}
}