我正在创建一个从Tmdb Api获取电影列表的应用程序。 我的代码是主要的Activity是
public class MainActivityFragment extends Fragment {
public class FetchImageTask extends AsyncTask<...>{
//
}
}
我还有另一个适配器类
public class MovieAdapter extends ArrayAdapter<MovieImage> {
private static int page_nmber = 1;
public MovieAdapter(Context context, List<MovieImage> objects) {
super(context, 0 , objects);
}
final String LOG_TAG = MovieAdapter.class.getSimpleName();
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(getCount() == position + 5 ){
//Log.v(LOG_TAG, " last two images");
}
MovieImage movieImage = getItem(position);
View rootView = LayoutInflater.from(getContext())
.inflate(R.layout.list_item_movie, parent, false);
ImageView imageView = (ImageView) rootView.findViewById(R.id.list_item_movie_image);
Picasso.with(getContext()).load(movieImage.getImage_path())
.placeholder(R.drawable.loading)
.fit()
.into(imageView);
return rootView;
}
public void fetchExtraImages(){
MainActivityFragment.FetchImageTask fetchImageTask;
fetchImageTask = new MainActivityFragment.FetchImageTask();
//Gives me error saying this is not an enclosing class
}
实际上我想为FetchImageTask对象创建另一个对象并调用下一页(第2页) 结果并将结果附加到相应的适配器。
感谢任何帮助。 :)
答案 0 :(得分:2)
我建议您不要在活动中使用异步任务。
1 - 您可能必须使用另一个class
,activity
或fragment
2 - 您的活动将承担单一责任(SOLID)
3 - 您可以使用callbacks
与activity
,fragment
或任何class
进行通信。
创建interface
分隔:
public interface FetchImageCallback{
void onImageFetched(OBJECT);//replace by your
}
让您的活动implements
FetchImageCallback,以便您可以获取图片,例如:
public class MainActivityFragment extends Fragment implements FetchImageCallback{
public void fetchExtraImages(){
FetchImageTask fetchImageTask = new FetchImageTask(this); //this is your callback
}
void onImageFetched(OBJECT){
//do what you want to do with the images fetched (OBJECT)
}
}
如果你真的想用作内部类(不推荐),只需将FetchImageTask
声明为静态类:
public static class FetchImageTask{
//some code
}