如何在ViewPager上有效地添加多个图像

问题描述 投票:0回答:1

这是我学习Android应用程序的第三天。目前正在使用android studio,我的问题与ViewPager类有关。下面是我的fragment和viewPager类的代码。

ViewPager和适配器类:

包com.syedabdullah.syed.quran_memorization_application;

import android.content.pm.ActivityInfo; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.Window;

公共类ViewPagerActivity扩展FragmentActivity {

ViewPager myPager;
PagerAdapter myAdapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Remove Title bar
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    //force portrait orientation. (No landscape orientation).
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.activity_view_pager);

    myPager = (ViewPager) findViewById(R.id.pager);
    myAdapter = new adapterClass(getSupportFragmentManager());
    myPager.setAdapter(myAdapter);
}

/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_view_pager, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
} */

/*Nested class needed for custom Adapter */
private class adapterClass extends FragmentStatePagerAdapter {

    int[] images = new int[3];
    images[0] = R.drawable._2;

    String extract = "R.drawable._";



    public adapterClass(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        //initialiseArray(images);
        return viewPageFragment.newInstance(position, images[position]);
    }

    @Override
    public int getCount() {
        return images.length;
    }

    private int[] initialiseArray(int[] array) {
        for (int i = 2; i <= array.length + 1; i++) {
            extract += i;
            array[i-2] = Integer.parseInt(extract);
        }
        return array;
    }
}

}

片段类:

包com.syedabdullah.syed.quran_memorization_application;

/ ** * 2014年12月25日由syed创建。 * /

import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView;

/ ** *包含简单视图的占位符片段。 * /

public class viewPageFragment extends Fragment {

public viewPageFragment() {
}

public static viewPageFragment newInstance(int position, int imageId) {
    viewPageFragment myFrag = new viewPageFragment();
    Bundle myBundle = new Bundle();

    myBundle.putInt("imagePosition", position);
    myBundle.putInt("imageId", imageId);
    myFrag.setArguments(myBundle);

    return myFrag;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_view_pager,
            container, false);

    int imageId = getArguments().getInt("imageId");
    ImageView myImageView = (ImageView) rootView.findViewById(R.id.imageView);
    myImageView.setImageResource(imageId);

    return rootView;
} }

目前我的initialiseArray不起作用。如果我按如下方式初始化我的数组:

int[] images = {R.drawable._2, R.drawable._3, R.drawable._4};

它会在我的ViewPager中显示适当的图像。但是,我有超过500张图像,如果我这样做,它将需要永远。这就是为什么我想知道是否有更简单的方法来插入这些图像。我的所有图像都按递增顺序命名。所以我的第一张图片被命名为._2一直到._550或其他东西。

还有一个问题。如果我们可以制作一个类似的数组

int [] images = {R.drawable._2,R.drawable._3,R.drawable._4};

那为什么这不起作用?

int [] images = new int [3]; images [0] = R.drawable._2;

有人可以解释一下吗?谢谢。

java android android-layout android-fragments
1个回答
0
投票

我想出了一种有效地向ViewPager添加大量页面的方法。只是向可能面临类似问题的任何其他新人发布答案。我试图做的是在应用程序内存中添加数百个图像,效率非常低。它的假设是你必须下载图像(使用AsynTask或DownloadManger)并将它们存储在外部存储器上,然后从那里你可以提取图像。希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.