Я знаю, что это может звучать как страшный вопрос, но я изучаю столько, сколько мог, чтобы понять это. У меня есть приложение, которое требует просмотра пейджера для прокрутки по горизонтали для отображения разных видов. В каждом представлении ему нужна функциональность, для одного вида это может быть просто нажатие кнопки, для загрузки данных с сервера требуется другое представление (например, получение последней ленты Twitter), а также другие функции. Главное, что в представлении Pager каждое представление требует функциональности.Создайте ViewPager или аналогичную функциональность в Android
Моя первоначальная идея состояла в том, чтобы следовать этот учебник:
http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-horizontal-view-paging/
Однако, это только с видами, которые не имеют никакого взаимодействия. Мне удалось реализовать это и добавить мои макеты, но это только решение половины проблемы. В нем показано, как добавлять основные операции в комментарии, например, одну кнопку. Я хочу, чтобы каждый взгляд имел свою собственную деятельность, способную делать свою уникальную вещь.
Вот что я изначально имел:
public class DashboardContainerActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//Set content view to the dashboard container xml view
setContentView(R.layout.dashboard_container);
//Create a new instance of my page adapter from below
MyPageAdapter adapter = new MyPageAdapter();
//Reference the view pager used in the dashboard container xml view
ViewPager myPager = (ViewPager) findViewById(R.id.dashboardpanelpager);
//set an adapter to the view pager
myPager.setAdapter(adapter);
//First panel to be shown when opened
myPager.setCurrentItem(3);
}
}
/*------------------------------------------------------*/
class MyPageAdapter extends PagerAdapter {
public int getCount() {
//Return 7 as there will be 7 panes in the dashboard
return 7;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = null;
switch (position) {
case 0:
v = inflater.inflate(R.layout.dashboard_social, null);
break;
case 1:
v = inflater.inflate(R.layout.dashboard_info, null);
//DISPLAY INFORMATION FROM SERVER AND DISPLAY HERE
break;
case 2:
v = inflater.inflate(R.layout.dashboard_allcourses, null);
//LIST OF COURSES
break;
case 3:
v = inflater.inflate(R.layout.dashboard_news, null);
//USE HTTP HERE FOR TWITTER FEED
break;
case 4:
v = inflater.inflate(R.layout.dashboard_mycourse, null);
//DOWNLOAD USER'S PERSONAL INFORMATION AND DISPLAY HERE
break;
case 5:
v = inflater.inflate(R.layout.dashboard_media, null);
//DISPLAY LATEST UPLOADED MULTIMEDIA
break;
case 6:
v = inflater.inflate(R.layout.dashboard_extras, null);
break;
}
((ViewPager) collection).addView(v, 0);
return v;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
У меня есть отдельные мероприятия для каждого макета добавленного к ViewPager, но я предполагаю, что эти действия не могут быть добавлены в ViewPager, а не только макеты.
Я прочитал кое-что о фрагментах, но я не уверен, совместим ли это с уровнем API 8, по-видимому, это предназначено для сотовых и мороженого сэндвич.