SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/ColumnPagerAdapter.java

105 lines
2.7 KiB
Java

package jp.juggler.subwaytooter;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
public class ColumnPagerAdapter extends PagerAdapter{
final ActMain activity;
final LayoutInflater inflater;
boolean loop_mode = false;
ColumnPagerAdapter( ActMain activity ){
this.activity = activity;
this.inflater = activity.getLayoutInflater();
}
final ArrayList<Column> column_list = new ArrayList<>();
final SparseArray<ColumnViewHolder> holder_list = new SparseArray<>();
int addColumn( ViewPager pager, Column column ){
return addColumn( pager,column,pager.getCurrentItem()+1 );
}
int addColumn( ViewPager pager, Column column,int index ){
int size = column_list.size();
if( index > size ) index = size;
pager.setAdapter( null );
column_list.add( index,column );
pager.setAdapter( this );
notifyDataSetChanged();
return index;
}
public void removeColumn( ViewPager pager,Column column ){
int idx_column = column_list.indexOf( column );
if( idx_column == - 1 ) return;
int idx_showing = pager.getCurrentItem();
pager.setAdapter( null );
column_list.remove( idx_column );
pager.setAdapter( this );
}
public Column getColumn( int idx ){
if( idx >= 0 && idx < column_list.size() ) return column_list.get( idx );
return null;
}
public ColumnViewHolder getColumnViewHolder( int idx ){
return holder_list.get( idx );
}
@Override public int getCount(){
return column_list.size();
}
@Override public CharSequence getPageTitle( int page_idx ){
return "page"+ page_idx;
}
@Override
public boolean isViewFromObject( View view, Object object ){
return view == object;
}
@Override public Object instantiateItem( ViewGroup container, int page_idx ){
View root = inflater.inflate( R.layout.page_column, container, false );
container.addView( root, 0 );
Column column = column_list.get( page_idx );
ColumnViewHolder holder = new ColumnViewHolder( activity,column, page_idx );
//
holder_list.put( page_idx, holder );
//
holder.onPageCreate( root );
return root;
}
@Override public void destroyItem( ViewGroup container, int page_idx, Object object ){
View view = (View) object;
//
container.removeView( view );
//
ColumnViewHolder holder = holder_list.get( page_idx );
holder_list.remove( page_idx );
if( holder != null ){
holder.is_destroyed.set( true );
holder.onPageDestroy( view );
}
}
}