使用 viewpager,图像不显示
using viewpager , image is not showing
我有以下代码尝试使用 ViewPager。
问题是图像没有显示,我猜问题是片段没有被访问(或"called")你能找出原因吗?
我在Fragment方法中添加了一个print来检查它是否被访问过。
这个 ViewPager 适配器,getItem
应该 return 片段的值,或者有什么错误?
public class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter {
public static final String ARG_OBJECT = "Person_List";
private ArrayList<Listitem> personArrayList;
public DemoCollectionPagerAdapter(FragmentManager fm, ArrayList<Listitem> personArrayList)
{
super(fm);
Log.d("s", "adapterview");
this.personArrayList = personArrayList;
}
@Override
public Fragment getItem(int i) {
return DemoObjectFragment.newInstance(this.personArrayList.get(i));
}
@Override
public int getCount() {
return 1;
}
这是代码的其余部分
public class SingleViewActivity extends FragmentActivity {
ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page_view);
ArrayList<Listitem> personArrayList = new ArrayList<Listitem>();
ViewPager mViewPager = (ViewPager) findViewById(R.id.pager);
Log.d("s", "singleview");
Listitem item = new Listitem("1", "http://developer.android.com/assets/images/android_logo.png");
personArrayList.add(item);
DemoCollectionPagerAdapter mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter(getSupportFragmentManager(), personArrayList);
mViewPager.setAdapter(mDemoCollectionPagerAdapter);
}
}
public static class DemoObjectFragment extends Fragment {
public static final String ARG_PERSON_LIST = "Person_List";
private Listitem person;
public static DemoObjectFragment newInstance(Listitem items) {
DemoObjectFragment f = new DemoObjectFragment();
Bundle args = new Bundle();
args.putParcelable(ARG_PERSON_LIST, items);
f.setArguments(args);
System.out.print("instance1");
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args.containsKey(ARG_PERSON_LIST)) {
this.person = args.getParcelable(ARG_PERSON_LIST);
} else {
this.person = null;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_collection_object, container, false);
ImageView imageView = (ImageView) rootView.findViewById(R.id.funnyimage);
Bundle args = new Bundle();
this.person = args.getParcelable("Person_List");
System.out.print("here1");
if (person != null) {
Picasso.with(getActivity())
.load(person.url)
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(imageView);
Log.i("PersonsActivity", String.valueOf(person.url));
}
return rootView;
}
}
删除这些行
Bundle args = new Bundle();
this.person = args.getParcelable("Person_List");
this.person
将是 null
,因为您正试图从空的 Bundle
中获取 Parcelable
。
所以这个不会被录入。
if (person != null) {
您不需要这些行的原因是 this.person
已正确加载到 onCreate
中。您不需要从 onCreateView
.
分配它
我有以下代码尝试使用 ViewPager。
问题是图像没有显示,我猜问题是片段没有被访问(或"called")你能找出原因吗?
我在Fragment方法中添加了一个print来检查它是否被访问过。
这个 ViewPager 适配器,getItem
应该 return 片段的值,或者有什么错误?
public class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter {
public static final String ARG_OBJECT = "Person_List";
private ArrayList<Listitem> personArrayList;
public DemoCollectionPagerAdapter(FragmentManager fm, ArrayList<Listitem> personArrayList)
{
super(fm);
Log.d("s", "adapterview");
this.personArrayList = personArrayList;
}
@Override
public Fragment getItem(int i) {
return DemoObjectFragment.newInstance(this.personArrayList.get(i));
}
@Override
public int getCount() {
return 1;
}
这是代码的其余部分
public class SingleViewActivity extends FragmentActivity {
ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page_view);
ArrayList<Listitem> personArrayList = new ArrayList<Listitem>();
ViewPager mViewPager = (ViewPager) findViewById(R.id.pager);
Log.d("s", "singleview");
Listitem item = new Listitem("1", "http://developer.android.com/assets/images/android_logo.png");
personArrayList.add(item);
DemoCollectionPagerAdapter mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter(getSupportFragmentManager(), personArrayList);
mViewPager.setAdapter(mDemoCollectionPagerAdapter);
}
}
public static class DemoObjectFragment extends Fragment {
public static final String ARG_PERSON_LIST = "Person_List";
private Listitem person;
public static DemoObjectFragment newInstance(Listitem items) {
DemoObjectFragment f = new DemoObjectFragment();
Bundle args = new Bundle();
args.putParcelable(ARG_PERSON_LIST, items);
f.setArguments(args);
System.out.print("instance1");
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args.containsKey(ARG_PERSON_LIST)) {
this.person = args.getParcelable(ARG_PERSON_LIST);
} else {
this.person = null;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_collection_object, container, false);
ImageView imageView = (ImageView) rootView.findViewById(R.id.funnyimage);
Bundle args = new Bundle();
this.person = args.getParcelable("Person_List");
System.out.print("here1");
if (person != null) {
Picasso.with(getActivity())
.load(person.url)
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(imageView);
Log.i("PersonsActivity", String.valueOf(person.url));
}
return rootView;
}
}
删除这些行
Bundle args = new Bundle();
this.person = args.getParcelable("Person_List");
this.person
将是 null
,因为您正试图从空的 Bundle
中获取 Parcelable
。
所以这个不会被录入。
if (person != null) {
您不需要这些行的原因是 this.person
已正确加载到 onCreate
中。您不需要从 onCreateView
.