Android 循环浏览ViewPager图像

Android 循环浏览ViewPager图像,android,for-loop,android-viewpager,Android,For Loop,Android Viewpager,我正在开发一个android应用程序,其中我使用viewpager显示RESTAPI中的一些图像。这些Api有许多json格式的图像。我只想在viewpager中显示前8或10个图像。但是我没有找到正确的方法来循环浏览图像。这是我的查看寻呼机代码 private static ViewPager viewPager; private static int currentPage = 0; private List<NewsModel> imageList=new ArrayList&

我正在开发一个android应用程序,其中我使用viewpager显示RESTAPI中的一些图像。这些Api有许多json格式的图像。我只想在viewpager中显示前8或10个图像。但是我没有找到正确的方法来循环浏览图像。这是我的查看寻呼机代码

private static ViewPager viewPager;
private static int currentPage = 0;
private List<NewsModel> imageList=new ArrayList<>( );
private ViewPagerAdapter adapter;
private NewsController mController;
private Timer swipeTimer;
private Handler handler;
private Runnable Update;


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

    View view = inflater.inflate(R.layout.option_main_fragment, container, false);
    viewPager = view.findViewById(R.id.pager);
    adapter=new ViewPagerAdapter( this.getActivity(),imageList );
    CircleIndicator indicator = (CircleIndicator) view.findViewById(R.id.indicator);
    viewPager.setAdapter(adapter);
    indicator.setViewPager(viewPager);
    adapter.registerDataSetObserver(indicator.getDataSetObserver());

    mController = new NewsController(this);
    mController.startFetching();

    return view;

}

   @Override
public void onResume() {
    // Auto start of viewpager
    handler = new Handler();
    Update= new Runnable() {
        public void run() {
            if (currentPage == imageList.size()) {
                currentPage = 0;
            }
            viewPager.setCurrentItem(currentPage++, true);
            System.out.println(viewPager.getCurrentItem());
        }
    };
    swipeTimer = new Timer();
    swipeTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            handler.post(Update);
        }
    },2000,5000);
    super.onResume();
}

@Override
public void onPause() {
    swipeTimer.cancel();
    super.onPause();
}
private static ViewPager ViewPager;
私有静态int currentPage=0;
私有列表imageList=newarraylist();
专用ViewPagerAdapter适配器;
专用新闻控制器;
私人定时器;
私人经办人;
私有可运行更新;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.option\u main\u片段,容器,假);
viewPager=view.findViewById(R.id.pager);
适配器=新的ViewPagerAdapter(this.getActivity(),imageList);
CircleIndicator indicator=(CircleIndicator)view.findViewById(R.id.indicator);
viewPager.setAdapter(适配器);
指示器。设置viewPager(viewPager);
registerDataSetObserver(indicator.getDataSetObserver());
mController=新的新闻控制器(此);
mController.startFetching();
返回视图;
}
@凌驾
恢复时公开作废(){
//自动启动viewpager
handler=新的handler();
Update=newrunnable(){
公开募捐{
如果(currentPage==imageList.size()){
currentPage=0;
}
setCurrentItem(currentPage++,true);
System.out.println(viewPager.getCurrentItem());
}
};
swipeTimer=新计时器();
swipeTimer.schedule(新TimerTask(){
@凌驾
公开募捐{
处理人.职位(更新);
}
},2000,5000);
super.onResume();
}
@凌驾
公共无效暂停(){
swipitemer.cancel();
super.onPause();
}
编辑的代码这是获取json数据的代码

public class NewsController {
private static final String TAG = NewsController.class.getSimpleName();
private UserCallbackListener mListener;
private NewsRestApiManager mApiManager;
private AppImage appImages;

Realm news_realm;
ArrayList<String> title_list = new ArrayList<>();
GlobalClass globalClass = new GlobalClass();

public NewsController(UserCallbackListener listener) {
    mListener = listener;
    mApiManager = new NewsRestApiManager();
}



public void startFetching(){

    news_realm = Realm.getDefaultInstance();

   mApiManager.getNewsApi().getNews(new Callback<String>() {

        @Override
        public void success(String s, Response response) {
            Log.d(TAG, "JSON :: " + s);

            try {
                JSONArray array = new JSONArray(s);

                for(int i = 0; i < array.length(); i++) {
                    JSONObject jsonObject = array.getJSONObject(i);

                    NewsModel news = new NewsModel();
                    news.setTitle( jsonObject.optString( "title") );
                    news.setBody( jsonObject.optString( "body" ) );
                    news.setUpdatedAt( jsonObject.getString( "updated_at" ) );

                    ArrayList<AppImage> list = new ArrayList();
                    JSONArray imageArray =jsonObject.getJSONArray("appImages");
                    if (imageArray.length() > 1) {
                        for(int j=0; j<imageArray.length();j++){
                            appImages  = new AppImage();
                            try {
                                appImages.setSrc( new JSONArray( s ).getJSONObject( i ).getJSONArray( "appImages" ).getJSONObject( j ).optString( "src" ) );

                            }catch (JSONException e){
                                e.printStackTrace();
                            }
                            list.add(appImages);
                        }
                    }
                    news.setAppImages( list );

                    TeaserImageSmall coverImage=new TeaserImageSmall();

                    try {
                        coverImage.setSrc( jsonObject.getJSONObject("teaserImageSmall").optString("src"));
                        news.setTeaserImageSmall(coverImage);
                    } catch (JSONException e) {
                        Log.d(TAG, "News image could not be loaded for: " + news.getTitle());
                    }

                    mListener.onFetchProgressNews(news);


                }
            } catch (JSONException e) {
                mListener.onFetchFailed();
            }

            mListener.onFetchComplete();
        }

        @Override
        public void failure(RetrofitError error) {
            Log.d(TAG, "Error :: " + error.getMessage());
            mListener.onFetchComplete();
        }
    });

}
public interface UserCallbackListener{

    void onFetchProgressNews(NewsModel news);
    void onFetchComplete();
    void onFetchFailed();
}
公共类新闻控制器{
私有静态最终字符串标记=newcontroller.class.getSimpleName();
私有用户callbacklistener mListener;
私有新闻商店管理器;
私有AppImage AppImage;
领域新闻领域;
ArrayList title_list=新建ArrayList();
GlobalClass GlobalClass=新的GlobalClass();
公共新闻控制器(UserCallbackListener侦听器){
mListener=监听器;
mApiManager=新的NewsRestApiManager();
}
公开作废开始蚀刻(){
news_realm=realm.getDefaultInstance();
mApiManager.getNewsApi().getNews(新回调函数(){
@凌驾
public void成功(字符串s,响应){
Log.d(标记“JSON::”+s);
试一试{
JSONArray数组=新的JSONArray;
对于(int i=0;i1){

对于(int j=0;j我想您可以如下更改代码

ArrayList<AppImage> list = new ArrayList();
JSONArray imageArray =jsonObject.getJSONArray("appImages");
if (imageArray.length() > 1) {
    for(int j=0; j<imageArray.length() && j < 8;j++) { // Added condition j < 8
        appImages  = new AppImage();
        try {
            appImages.setSrc( new JSONArray( s ).getJSONObject( i ).getJSONArray( "appImages" ).getJSONObject( j ).optString( "src" ) );

        }catch (JSONException e){
            e.printStackTrace();
        }
        list.add(appImages);
    }
}
news.setAppImages( list );
ArrayList list=new ArrayList();
JSONArray imageArray=jsonObject.getJSONArray(“appImages”);
if(imageArray.length()>1){

对于(int j=0;j当你运行你的应用程序时会发生什么?这与你想要的有什么不同?它在整个图像数据中循环。但我只想要前8张图像请显示获取图像数据的代码。然后在
imageList
@Kunu中只添加8到10张图像。你能解释一下我该如何做吗?我不想循环浏览co控件类。因为我需要这些图像用于其他目的。我只想在viewpager中创建一个循环。
ArrayList<AppImage> list = new ArrayList();
JSONArray imageArray =jsonObject.getJSONArray("appImages");
if (imageArray.length() > 1) {
    for(int j=0; j<imageArray.length() && j < 8;j++) { // Added condition j < 8
        appImages  = new AppImage();
        try {
            appImages.setSrc( new JSONArray( s ).getJSONObject( i ).getJSONArray( "appImages" ).getJSONObject( j ).optString( "src" ) );

        }catch (JSONException e){
            e.printStackTrace();
        }
        list.add(appImages);
    }
}
news.setAppImages( list );
@Override
public int getCount() {
    return imageList.size() <= 8? imageList.size():8;
}