我有我的Android应用程序的情况.场景是我正在使用一个视图页面适配器whering我有3个页面实际上是片段.我的问题是我想从对话活动更新这些.对话活动包含一个列表来自其onclick事件我想更新片段.
首先是有可能,如果是,请切入并帮助我.
干杯Gaurav
这是我的视图页面适配器
/*
* Copyright (C) 2012 Gaurav Rawat
*
*/
package com.punksrant.ifinddryday.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.punksrant.ifinddryday.fragment.AllFragment;
import com.punksrant.ifinddryday.fragment.HomeFragment;
import com.punksrant.ifinddryday.fragment.SynchFragment;
import com.punksrant.ifinddryday.utils.IFindDryDaysConstants;
import com.viewpagerindicator.TitleProvider;
public class ViewPagerAdapter extends FragmentPagerAdapter implements
TitleProvider {
private static String[] titles = IFindDryDaysConstants.titles;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public String getTitle(int position) {
return titles[position % titles.length].toUpperCase();
}
@Override
public int getCount() {
return titles.length;
}
@Override
public Fragment getItem(int position) {
Fragment fragment;
switch (position) …Run Code Online (Sandbox Code Playgroud) 请告诉我如何在android上重置ViewPager的内容.我试图调用adapter.notifyDataSetChanged()但是当我滚动视图时,适配器不会调用getItem(position).它总是返回旧的子视图.
更新:这是我的片段视图.当我重置viewPager数据时,它使用了加载的Fragment视图.它只是从onCreateView而不是Constructor开始.
public class ResultView extends Fragment {
//Declare properties
//Constructor
public ResultView(Province province, Calendar calendar) {
Log.d("xskt", "ResultView constructor");
this.province = province;
this.calendar = (Calendar) calendar.clone();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("xskt", "ResultView onCreateView");
View view = inflater.inflate(R.layout.resultview, null);
//do some thing
return view;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
活动 A 有片段。当它启动对活动 B 的意图时B.finish(),然后当 时,AonCreate()再次执行。
但这一次,即使A.onCreate()有 newPacksPagerAdapter和 new ViewPager,片段也显示为旧数据。
我可以看到它onCreateView()为每个片段执行,但由于static newInstance()没有调用它,它仍然具有旧参数。getItem(position)调用FragmentPagerAdapter 时会创建参数。
这是它的实施方式 -
public class PackActivity extends Activity {
...
PacksPagerAdapter mPacksPagerAdapter;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPacksPagerAdapter = new MyPagerAdapter(getFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mPacksPagerAdapter);
mViewPager.setOffscreenPageLimit(PACK_PAGES - 1);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setTitle(...);
} …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager android-activity android-pageradapter
我有一个ViewPager ,Fragment如果某个动作发生,我必须更换第一个.
public static class PagerAdapter extends FragmentStatePagerAdapter{
private TempChannel latestChannel;
private VideosFragment.SortType sortType;
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
if(latestChannel == null) {
return new LatestVideosFragment();
}else{
return VideosFragment.getVideosFragment(latestChannel, sortType);
}
case 1:
return new LiveVideosFragment();
case 2:
return new ConversationsFragment();
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,当我单击某个通道时LatestVideosFragment,适配器中的第一个位置应该更改为VideosFragment该类的实例.
public void startLatestChannelFragment(TempChannel channel, VideosFragment.SortType sortType){
adapter.setLatestChannel(channel, sortType);
adapter.notifyDataSetChanged();
Log.d("x", "on channel started");
}
Run Code Online (Sandbox Code Playgroud)
我假设调用 …
我正在使用Glide将图像加载到ViewPager使用中PagerAdapter.当我使用以下方法加载图像时:
Glide.with(mContext).load(mImage).placeholder(R.drawable.placeholder).into(mImageView);
Run Code Online (Sandbox Code Playgroud)
一切正常,但现在我需要从滑动中获取位图,并在加载以备将来编辑时将其存储在地图中,因此我将此方法切换为以下方法:
Glide.with(mContext).load(mImage).asBitmap().placeholder(R.drawable.placeholder).into(new SimpleTarget<Bitmap>() {
@Override
public void onLoadStarted(Drawable placeholder) {
super.onLoadStarted(placeholder);
mImageView.setImageDrawable(placeholder);
}
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
if (bitmap != null) {
mImageView.setImageBitmap(bitmap);
}
mBitmapMap.put(position, bitmap);
mInterface.onImageLoaded(position, bitmap);
}
});
Run Code Online (Sandbox Code Playgroud)
但结果是图像并不总是显示出来.我认为这与滑动加载图像异步这一事实有关,并且在某些时候它在instatiateItem方法已经完成运行时返回.
看起来这个问题是相关的.但那里的建议并没有帮助我.有人遇到过这个问题并且有解决方案吗?
android bitmap android-adapter android-viewpager android-glide