Android/Java-更新listArray以调用适配器中的视图

Android/Java-更新listArray以调用适配器中的视图,java,android,arrays,android-viewpager,android-pageradapter,Java,Android,Arrays,Android Viewpager,Android Pageradapter,我正在尝试实现一个viewPager,它允许我根据viewPager的位置更改Youtube播放列表(String playlist)。另一篇StackOverflow帖子告诉我需要:“在调用'notifyDataSetChanged()之前更新listArray”“。调用notify是更新您正在使用的适配器中的视图的信号。在代码中,getYouTube…需要更新适配器引用的和数组对象。您应该能够通过在代码中实现连接来获取它。” ^-资料来源: 根据对我上一篇SO帖子的回复,我相信我需要使用以下

我正在尝试实现一个
viewPager
,它允许我根据viewPager的位置更改Youtube播放列表(
String playlist
)。另一篇StackOverflow帖子告诉我需要:
“在调用'notifyDataSetChanged()之前更新listArray”“。调用notify是更新您正在使用的适配器中的视图的信号。在代码中,getYouTube…需要更新适配器引用的和数组对象。您应该能够通过在代码中实现连接来获取它。”

^-资料来源:

根据对我上一篇SO帖子的回复,我相信我需要使用以下内容:

    @Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
        convertView = LayoutInflater.from(context)
          .inflate(R.layout.home, parent, false);
    }

    ImageView imageView = new ImageView(context);
    ImageView imageView = getItem(position);
    imageView.setImageResource(imageView.getImage());

    return convertView;
}
^-资料来源:

当前源代码的工作方式: 我有一个JSON请求,其中包含从YouTube获得响应的字符串播放列表:

@Override
   protected Void doInBackground(Void... arg0) {
       try {

         HttpClient client = new DefaultHttpClient();

         HttpUriRequest request = new HttpGet("https://gdata.youtube.com/feeds/api/videos?author="+PLAYLIST+"&v=2&alt=jsonc");
我想使用可滑动页脚图像(pagerAdapter)来更改字符串播放列表的值。我主要关心的是如何使用下面显示的PagerAdapter设置以下内容:

String PLAYLIST = "vevo";
String PLAYLIST = "TheMozARTGROUP‎";
String PLAYLIST = "TimMcGrawVEVO‎";
String PLAYLIST = "TiestoVEVO‎";
String PLAYLIST = "EminemVEVO‎";
然后,在PagerAdapter设置播放列表的值后,立即使用播放列表的新值创建播放列表:

新的GetYouTubeUserVideosTask(响应句柄,播放列表).execute()

我已经创建了一个新的字符串数组,其中包含我想要使用的值。现在我的问题是:我如何修改下面的源代码,使用其中一个数组值设置播放列表的值,并执行新的播放列表?(目前我的源代码已编译,但当我滑动PagerAdapter时,什么也没有发生)

屏幕截图:

电流源:
私有类ImagePagerAdapter扩展了PagerAdapter{
公共图像页面雷达(活动法,国际[]图像,
字符串[]stringArra){
图像阵列=模拟图像;
活动=行动;
stringArray=stringArra;
}
//这是您的构造函数
公共图像页雷达(){
超级();
//setOnPageChangeListener(mPageChangeListener);
}
private int[]mImages=new int[]{R.drawable.selstation\u up\u btn,
R.drawable.Classic\u up\u btn,R.drawable.country\u up\u btn,
R.drawable.dance\u up\u btn,R.drawable.hiphop\u up\u btn,
R.drawable.island\u up\u btn,R.drawable.latin\u up\u btn,
R.drawable.pop_up_btn,R.drawable.samba_up_btn};
私有字符串[]stringArray=新字符串[]{“vevo”,
“莫扎特小组‎", "蒂姆麦克拉维沃‎", "铁斯托维沃‎",
“阿姆维沃‎" };
@凌驾
public int getCount(){
返回图像长度;
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回视图==((图像视图)对象);
}
@凌驾
公共对象实例化项(视图组容器,int位置){
Context=Home.this;
ImageView ImageView=新的ImageView(上下文);
imageView.setScaleType(ScaleType.FIT_XY);
setImageResource(mImages[position]);
((ViewPager)容器).addView(imageView,0);
返回图像视图;
}
@凌驾
公共项(视图组容器、int位置、对象){
((ViewPager)容器)。移除视图((ImageView)对象);
}
private final ViewPager.SimpleOnPageChangeListener mPageChangeListener=新建ViewPager.SimpleOnPageChangeListener(){
@凌驾
已选择页面上的公共无效(最终整型位置){
onTabChanged(mPager.getAdapter(),mCurrentTabPosition,position);
mCurrentTabPosition=位置;
}
};
已更改受保护的适配器(最终页面Radapter适配器,
最终整型旧位置,最终整型新位置){
//如果滑动是从左到右,或从右到左,则计算
如果(旧位置>新位置){
//从左到右
}否则{
//从右向左
视图vg=findViewById(R.layout.home);
vg.invalidate();
}
final ViewPager ViewPager=(ViewPager)findViewById(R.id.view\u pager);
viewPager.setOnPageChangeListener(新的OnPageChangeListener(){
int oldPos=viewPager.getCurrentItem();
@凌驾
已滚动页面上的公共无效(整数位置、浮点arg1、整数arg2){
如果(位置>旧位置){
//向右移动
}否则如果(位置
请参阅上的“getView()”方法,将其与孤立imageView的代码进行比较…注意,在示例中,使用位图填充的imageView属于膨胀视图中包含的视图

R.layout.item拥有R.id.text
R.layout.item在您的第一个代码块中拥有R.id.image

-“imageView”需要是膨胀布局中某个对象的子对象,而当前不是。当前代码将孤立您的imageView,因为它尚未附加到“getView()”范围内的任何对象“.change ur layout或在实例化后以编程方式附加图像视图。我不确定您的确切意思…(您能告诉我吗?如果有帮助,我很乐意接受您的答案)感谢您的帮助-我仍然不知道如何附加图像视图-我是否应该将parent、false替换为parent、imageView?您需要阅读视图的基本知识…如何管理它们…如何附加到布局…类似于tv的内容。setLayoutParams(新的LayoutParams(Lay
private class ImagePagerAdapter extends PagerAdapter {
    public ImagePagerAdapter(Activity act, int[] mImages,
            String[] stringArra) {
        imageArray = mImages;
        activity = act;
        stringArray = stringArra;
    }

    // this is your constructor
    public ImagePagerAdapter() {
        super();
        // setOnPageChangeListener(mPageChangeListener);
    }

    private int[] mImages = new int[] { R.drawable.selstation_up_btn,
            R.drawable.classical_up_btn, R.drawable.country_up_btn,
            R.drawable.dance_up_btn, R.drawable.hiphop_up_btn,
            R.drawable.island_up_btn, R.drawable.latin_up_btn,
            R.drawable.pop_up_btn, R.drawable.samba_up_btn };

    private String[] stringArray = new String[] { "vevo",
            "TheMozARTGROUP‎", "TimMcGrawVEVO‎", "TiestoVEVO‎",
    "EminemVEVO‎" };

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

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Context context = Home.this;
        ImageView imageView = new ImageView(context);
        imageView.setScaleType(ScaleType.FIT_XY);
        imageView.setImageResource(mImages[position]);
        ((ViewPager) container).addView(imageView, 0);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ImageView) object);
    }

    private final ViewPager.SimpleOnPageChangeListener mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {

        @Override
        public void onPageSelected(final int position) {
            onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);
            mCurrentTabPosition = position;

        }
    };

    protected void onTabChanged(final PagerAdapter adapter,
            final int oldPosition, final int newPosition) {
        // Calc if swipe was left to right, or right to left
        if (oldPosition > newPosition) {
            // left to right
        } else {
            // right to left

            View vg = findViewById(R.layout.home);
            vg.invalidate();
        }
        final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            int oldPos = viewPager.getCurrentItem();

            @Override
            public void onPageScrolled(int position, float arg1, int arg2) {

                if (position > oldPos) {
                    // Moving to the right

                } else if (position < oldPos) {
                    // Moving to the Left

                    View vg = findViewById(R.layout.home);
                    vg.invalidate();
                }
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub

            }

        });

    }
}
}