2016-09-01 7 views
0

viewPagerの画像をスライドさせようとしていますが、画像がドローブ可能なフォルダから画像を使用している間に自動的にスライドします。しかし、私は、サーバー・イメージのURLからその示すエラーをスライドしなければ、サーバからの画像を表示するには、このような何か抱き合わせていながら:サーバーから画像を表示しているときにエラーが発生しました.Picassoのアンドロイド

をアプリケーションのPagerAdapterはPagerAdapter#notifyDataSetChangedを呼び出さずに、アダプタの内容を変更しました!

私はグーグルでこの問題を解決しようとしましたが、解決できませんでした。私は助けが必要です。私のコードは以下の通りです:

アクティビティ作業:

String imageListQuery=null; 

try { 
    imageListQuery=URLEncoder.encode("getChatRooms", "UTF-8") + "=" + URLEncoder.encode("getChatRooms", "UTF-8"); 

    backgroundTask=new AsyncTaskClass(context_NavigationActivity, new AsyncTaskResult() { 
     @Override 
     public void AsyncTaskResult(String result) throws JSONException { 

      if(result!=null){ 
       pageViewerAdapter.notifyDataSetChanged(); 
      } 


      JSONObject js = new JSONObject(result); 
//   Log.v("ResDFrJ",js.toString()); 
      JSONArray arr = js.getJSONArray("result"); 

      for (int i = 0; i < arr.length(); i++) { 

       JSONObject tmpOb = new JSONObject(arr.optString(i)); 
       UsersListShowClass tmpClass = new UsersListShowClass(); 

       tmpClass.setProPicUrl_users(InfoSetClass.getBaseUrl()+tmpOb.getString("profile_pic_id")); 
       imageList.add(i,tmpClass); 

      } 
     } 
    }); 

    backgroundTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,"POST","mobileApi/chatRooms",imageListQuery); 

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

viewPager=(ViewPagerCustomDuration)findViewById(R.id.pageViewerId); 
viewPager.setScrollDurationFactor(15); 
pageViewerAdapter=new PageViewerAdapter(context_NavigationActivity,imageList); 

NUM_PAGES=pageViewerAdapter.getCount(); 
viewPager.setAdapter(pageViewerAdapter); 
pageViewerAdapter.notifyDataSetChanged(); 



final Handler handler = new Handler(); 

final Runnable update = new Runnable() { 
    public void run() { 
     if (currentPage == NUM_PAGES - 1) { 
      currentPage = 0; 
     } 

     viewPager.setCurrentItem(currentPage++, true); 
    } 
}; 

new Timer().schedule(new TimerTask() { 

    @Override 
    public void run() { 
     handler.post(update); 
    } 
}, 100, 5000); 

アダプタ:

public class PageViewerAdapter extends PagerAdapter { 

    private Context context; 
    private ArrayList<UsersListShowClass> imageList; 
    UsersListShowClass usersListShowClass; 

    public PageViewerAdapter(Context context,ArrayList<UsersListShowClass> imageList){ 
     this.context=context; 
     this.imageList=imageList; 
    } 

    @Override 
    public int getCount() { 
     if(imageList != null){ 
      return imageList.size(); 
     } 
     return 0; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return (view==(LinearLayout)object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view=layoutInflater.inflate(R.layout.page_viewer_adapter_layout,container,false); 

     ImageView imageView=(ImageView)view.findViewById(R.id.videoViewId); 
     usersListShowClass=imageList.get(position); 

     Picasso.with(context).load(usersListShowClass.getProPicUrl_users()).error(R.drawable.ic_circle_24dp). 
       placeholder(R.drawable.ic_circle_24dp).into(imageView); 

     container.addView(view); 
     return view; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 

     container.removeView((LinearLayout) object); 

    } 

    @Override 
    public int getItemPosition(Object object) { 
     return PageViewerAdapter.POSITION_NONE; 
    } 
} 

私はstackoverflowの中にそのすでに解決し、ほぼ同様のエラーを知っているが、私の場合は多分少し異なる。助けが必要です。

+1

は、なぜあなたは 'ViewPager' pageViewerを呼び出していますか? –

+0

申し訳ありませんが私はそれを間違って呼び出している – AAA

答えて

1

追加してください:

pageViewerAdapter.notifyDataSetChanged(); 

後:

imageList.add(i,tmpClass); 
+0

ありがとう、それは働いていますが、 – AAA

関連する問題