У меня есть один вид списка. Я могу добавить любой вид к нему в качестве заголовка. но когда я пытаюсь добавить окно просмотра изображений, мое приложение вылетает.
Мой размер окна просмотра тоже установлен.
header_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:custom="http://schemas.android.com/tools">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="150dp"
**strong text**android:layout_height="150dp"/>
</LinearLayout>
viewpage_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image"
android:layout_width="150dp"
android:layout_height="150dp"
android:adjustViewBounds="true"
android:layout_gravity="center"
android:src="@mipmap/ic_launcher"
android:scaleType="centerCrop" />
</LinearLayout>
viewpageradapter.java
public class ViewPagerAdapter extends PagerAdapter {
Context c;
String images[];
LayoutInflater inflater;
public ViewPagerAdapter(Context c, String[] imagePaths) {
this.images = imagePaths;
this.c = c;
}
@Override public int getCount() {
return this.images.length;
}
@Override public boolean isViewFromObject(View view, Object object) {
return view == (object);
}
@Override public Object instantiateItem(ViewGroup container, int position) {
inflater = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemview = inflater.inflate(R.layout.viewpage_item, container,
false);
ImageView image;
image = (ImageView) itemview.findViewById(R.id.image);
try {
Picasso.with(c).
load(images[position])
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher)
.into(image);
}
catch ( Exception Ex)
{ Toast.makeText(c, "catch", Toast.LENGTH_SHORT).show();
}
container.addView(itemview);
return itemview;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager)container).removeView((View) object);
}
}
и во фрагменте представления списка у меня есть этот код
listfragment.java
открытый класс listfragment расширяет ListFragment, реализует AbsListView.OnScrollListener {
ViewPager viewPager;
ViewPagerAdapter adapter;
private String[] images= {
"url1","url2"};
Context contextSl = this.getActivity();
private listadapter newadp;
LayoutInflater inflater;
View headerView;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
inflater = LayoutInflater.from(this.getActivity());
headerView = inflater.inflate(R.layout.header_view, null, false);
viewPager = (ViewPager) headerView.findViewById(R.id.pager);
adapter = new ViewPagerAdapter(contextSl, images);
newadp=new listadapter(getActivity(),model);
viewPager.setAdapter(adapter);
getListView().addHeaderView(headerView);
AbsListView.LayoutParams headerViewParams = new
AbsListView.LayoutParams(Const.width, 400);
headerView.setLayoutParams(headerViewParams);
setListAdapter(newadp);
getListView().setOnScrollListener( this);
getListView().setDivider(null);
getListView().setDividerHeight(16);
}
////////////////////