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
}
});
}
}
}