마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask의 onPostExecute매서드 안에서 viewPager생성 질문

0 추천

 

 

일단 asyncTask 클래스의 생성자를 이렇게 했습니다.

public class DB_Send_BibleInfoRequest extends AsyncTask<String,Void,JSONArray> {

    private String returnValue;
    private int which_category;
    Activity activity;
    Context mContext;


    public DB_Send_BibleInfoRequest(Activity a, Context context){
        activity = a;
        mContext = context;
    }

 

그 후 mainActivity에서 asyncTask클래스를 콜 할 때 생성자로 this,this를 넘겼씁니다

 = new DB_Send_BibleInfoRequest(this,this);

 

 

 

 

onPostExecute() 매서드 안에서  viewPager을 생성하려고 합니다.

Bitmap_ArrayList array_list = Bitmap_ArrayList.getInstance();
// bitmap arraylist 크기를 구함.
int arraylist_size = array_list.size();
//arraylist 는 Bitmap 클래스의 ArrayList



//뷰페이저 아답터 생성
ViewPager pager = (ViewPager)activity.findViewById(R.id.viewPager);
ViewPager_Adapter va = new ViewPager_Adapter(mContext,arraylist_size);
pager.setAdapter(va);

viewPager pager 을 생성 할 때는 asyncTask에서 생성자로 받아온 activity(MainActivity)를 참조했습니다.

그 후 , adapter 생성자에는 mainActivity에서 받아온 mContext랑 어레이리스트 사이즈(뷰페이저에서 그릴 사진 갯수를 표현하기 위해)를 넘겼습니다.

아답터 클래스입니다. 

public class ViewPager_Adapter extends PagerAdapter {

Context mContext;
    int picture_size;

    ViewPager_Adapter(Context context,int picture_length){
        mContext = context;
        picture_size = picture_length;
    }



    public int getCount() {
        return picture_size;
    }


    public Object instantiateItem(ViewGroup Container, int position ){

        ViewPager_Layout pager_layout = new ViewPager_Layout(mContext);
        pager_layout.setImage(position);

        return pager_layout;
    }






    public boolean isViewFromObject(View view, Object object) {
        return view.equals(object);
    }
    public void destroyItem(ViewGroup container, int position, Object view) {
        container.removeView((View)view);
    }

}

마지막으로 뷰페이저 안에 들어갈 레이아웃 클래스입니다

public class ViewPager_Layout extends LinearLayout{

    Context mContext;
    ImageView image;

    public ViewPager_Layout(Context context){
        super(context);
        init(context);

    }

    private void init(Context context){
        mContext = context;

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.viewpager_imageview, this, true);

        image = (ImageView)findViewById(R.id.imageView);

    }
    public void setImage(int resld){
        Bitmap_ArrayList bita= Bitmap_ArrayList.getInstance();
        Bitmap a = bita.get(resld);

    }
}

 

이렇게 작성하는게 맞는건지 알고싶습니다.ㅠㅠ

작동안되는데..어디가 문제인지..

익명사용자 님이 2016년 10월 10일 질문
작동하지 않는다는게 crash가 발생하는부분인가요? crash가 발생하는것이면 에러로그도 같이 올려주시면 좋을거 같아요.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...