log*_*ror 2 android android-layout android-viewpager
我试图在一个活动中实现多个ViewPager,但它并没有真正起作用.实现这一目标的最佳方式是什么.我卡住了!!
这是活动
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.widget.Button;
import com.viewpagerindicator.CirclePageIndicator;
public class NewWorkoutActivity extends Activity{
    ViewPager corePager;
    ViewPager timePager;
    ViewPager equipmentPager;
    CirclePageIndicator coreIndicator;
    CirclePageIndicator timeIndicator;
    CirclePageIndicator equipmentIndicator;
    Button startWorkoutButton;
    PagerAdapter coreAdapter;
    PagerAdapter timeAdapter;
    PagerAdapter equipmentAdapter;
     String[] timeSets;
     String[] coreTargets;
     String[] equipments;
     int[] timeImages;
     int[] coreImages;
     int[] equipmentImages;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.new_workout);
         coreTargets = new String[] { "Full body", "Core",
                 "Legs", "Upper Body"};
         coreImages = new int[] { R.drawable.button_target_core,  R.drawable.button_target_core2,
                 R.drawable.button_target_core3,  R.drawable.button_target_core4};
         timeSets = new String[] { "15 Minutes", "20 Minutes", 
                 "30 Minutes", "45 Minutes"};
         timeImages = new int[] { R.drawable.button_target_core,  R.drawable.button_target_core2,
                 R.drawable.button_target_core3,  R.drawable.button_target_core4};
          equipments = new String[] { "Rope", "Kette Bell",
                 "Weight", "Hat"};
         equipmentImages = new int[] { R.drawable.button_target_core,  R.drawable.button_target_core2,
                 R.drawable.button_target_core3,  R.drawable.button_target_core4};
        startWorkoutButton=(Button)findViewById(R.id.startWorkoutButton);
        corePager=(ViewPager)findViewById(R.id.corepager);
        timePager=(ViewPager)findViewById(R.id.timepager);
        equipmentPager=(ViewPager)findViewById(R.id.equipmentpager);
        coreIndicator=(CirclePageIndicator)findViewById(R.id.coreindicator);
        timeIndicator=(CirclePageIndicator)findViewById(R.id.timeindicator);
        equipmentIndicator=(CirclePageIndicator)findViewById(R.id.equipmentindicator);
           coreAdapter = new MyViewPagerAdapter(NewWorkoutActivity.this, coreTargets, coreImages);
            // Binds the Adapter to the ViewPager
            corePager.setAdapter(coreAdapter);
            timeAdapter = new MyViewPagerAdapter(NewWorkoutActivity.this, timeSets, timeImages);
            // Binds the Adapter to the ViewPager
            timePager.setAdapter(timeAdapter);
            equipmentAdapter = new MyViewPagerAdapter(NewWorkoutActivity.this, equipments, equipmentImages);
            // Binds the Adapter to the ViewPager
            corePager.setAdapter(coreAdapter);
            // ViewPager Indicators
            coreIndicator.setViewPager(corePager);
            equipmentIndicator.setViewPager(equipmentPager);
            timeIndicator.setViewPager(timePager);
    }
}
and My Adapter
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MyViewPagerAdapter extends PagerAdapter {
    // Declare Variables
    Context context;
    String[] desc;
    int[] image;
    LayoutInflater inflater;
    public MyViewPagerAdapter(Context context, String[] desc,  int[] image) {
        this.context = context;
        this.desc = desc;
        this.image = image;
    }
    @Override
    public int getCount() {
        return desc.length;
    }
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((RelativeLayout) object);
    }
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        // Declare Variables
        TextView desctext;
        ImageView vpimage;
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View itemView = inflater.inflate(R.layout.body_page, container,
                false);
        // Locate the TextView in viewpager_item.xml
        desctext = (TextView) itemView.findViewById(R.id.vptext);
        // Capture position and set to the TextViews
        desctext.setText(desc[position]);
        // Locate the ImageView in viewpager_item.xml
        vpimage = (ImageView) itemView.findViewById(R.id.vpimage);
        // Capture position and set to the ImageView
        vpimage.setImageResource(image[position]);
        // Add viewpager_item.xml to ViewPager
        ((ViewPager) container).addView(itemView);
        return itemView;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // Remove viewpager_item.xml from ViewPager
        ((ViewPager) container).removeView((RelativeLayout) object);
    }
}
logcat告诉我ViewPagers没有适配器实例.
这对我有用:
试试这个代码.它没有太大的变化.
注意:我使用的图像只是随机图像..您可以使用自己的图像.
public class MainActivity extends ActionBarActivity {
    Context context;
    String[] timeSets;
    String[] coreTargets;
    String[] equipments;
    int[] timeImages;
    int[] coreImages;
    int[] equipmentImages;
    MyAdapter adapter1, adapter2, adapter3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;
        coreTargets = new String[]{"Full body", "Core",
                "Legs", "Upper Body"};
        coreImages = new int[]{R.drawable.ic_launcher, R.drawable.abc_ab_share_pack_holo_dark,
                R.drawable.abc_ab_stacked_solid_dark_holo, R.drawable.abc_ab_bottom_solid_dark_holo};
        timeSets = new String[]{"15 Minutes", "20 Minutes",
                "30 Minutes", "45 Minutes"};
        timeImages = new int[]{R.drawable.abc_ab_share_pack_holo_light, R.drawable.abc_ab_transparent_light_holo,
                R.drawable.abc_ic_ab_back_holo_light, R.drawable.abc_spinner_ab_pressed_holo_light};
        equipments = new String[]{"Rope", "Kette Bell",
                "Weight", "Hat"};
        equipmentImages = new int[]{R.drawable.abc_ic_clear, R.drawable.abc_textfield_searchview_holo_dark,
                R.drawable.abc_spinner_ab_focused_holo_light, R.drawable.abc_ab_stacked_solid_dark_holo};
        ViewPager view1 = (ViewPager) findViewById(R.id.viewpager1);
        ViewPager view2 = (ViewPager) findViewById(R.id.viewpager2);
        ViewPager view3 = (ViewPager) findViewById(R.id.viewpager3);
        adapter1 = new MyAdapter(coreTargets, coreImages);
        adapter2 = new MyAdapter(timeSets, timeImages);
        adapter3 = new MyAdapter(equipments, equipmentImages);
        view1.setAdapter(adapter1);
        view2.setAdapter(adapter2);
        view3.setAdapter(adapter3);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
适配器
    private class MyAdapter extends PagerAdapter {
        String[] desc;
        int[] image;
        public MyAdapter(String[] desc, int[] image) {
            super();
            this.desc = desc;
            this.image = image;
        }
        @SuppressLint("NewApi")
        @Override
        public void finishUpdate(ViewGroup container) {
            // TODO Auto-generated method stub
            super.finishUpdate(container);
        }
        @Override
        public int getCount() {
            return desc.length;
        }
        @Override
        public boolean isViewFromObject(View collection, Object object) {
            return collection == ((View) object);
        }
        @Override
        public Object instantiateItem(View collection, int position) {
            // Inflating layout
            LayoutInflater inflater = (LayoutInflater) collection.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            // Setting view you want to display as a row element
            View view = inflater.inflate(R.layout.items, null);
            TextView itemText = (TextView) view.findViewById(R.id.textViewMain);
            ImageView imageView = (ImageView) view.findViewById(R.id.imageViewmain);
            try {
                itemText.setText(desc[position]);
                imageView.setImageResource(image[position]);
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            ((ViewPager) collection).addView(view, 0);
            return view;
        }
        @Override
        public void destroyItem(View collection, int position, Object view) {
            ((ViewPager) collection).removeView((View) view);
        }
    }
}
该布局是这样的:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.mike.app.MainActivity$PlaceholderFragment"
    android:background="#ffc42823">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <android.support.v4.view.ViewPager
            android:layout_width="fill_parent"
            android:layout_height="200dp"
            android:id="@+id/viewpager1"
            android:background="#333333"
            />
        <View
            android:layout_width="fill_parent"
            android:layout_height="3dp"
            android:background="#FFFFFF"></View>
        <android.support.v4.view.ViewPager
            android:layout_width="fill_parent"
            android:layout_height="200dp"
            android:id="@+id/viewpager2"
            android:background="#333333" />
        <View
            android:layout_width="fill_parent"
            android:layout_height="3dp"
            android:background="#FFFFFF">></View>
        <android.support.v4.view.ViewPager
            android:layout_width="fill_parent"
            android:layout_height="200dp"
            android:id="@+id/viewpager3"
            android:background="#333333" />
    </LinearLayout>
</ScrollView>
项目布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.mike.app.MainActivity$PlaceholderFragment"
    android:background="#ff10c7c6"
    android:orientation="horizontal"
    android:gravity="center">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:id="@+id/imageViewmain" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:text="Some Text"
        android:textSize="25sp"
        android:id="@+id/textViewMain"
        android:gravity="center" />
</LinearLayout>
这是你想要的 ?如果是的话,这对我有用.. Lemme知道这是否有效.
| 归档时间: | 
 | 
| 查看次数: | 5991 次 | 
| 最近记录: |