Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在viewpages中使用更多视图_Java_Android - Fatal编程技术网

Java 在viewpages中使用更多视图

Java 在viewpages中使用更多视图,java,android,Java,Android,如何在viewpages中使用不同的视图?我想不出来 例如,带有列表框的视图和带有按钮的视图 这是我的代码: package com.stylingandroid.viewpager; import com.viewpagerindicator.TitlePageIndicator; import android.app.Activity; import android.os.Bundle; import android.support.v4.view.ViewPager; public

如何在viewpages中使用不同的视图?我想不出来

例如,带有列表框的视图和带有按钮的视图

这是我的代码:

package com.stylingandroid.viewpager;

import com.viewpagerindicator.TitlePageIndicator;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;

public class ViewPagerActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ViewPagerAdapter adapter = new ViewPagerAdapter(this);
        ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
        TitlePageIndicator indicator = (TitlePageIndicator) findViewById(R.id.indicator);
        pager.setAdapter(adapter);
        indicator.setViewPager(pager);
    }
}
如何在viewpages中使用不同的视图?我想不出来

例如,带有列表框的视图和带有按钮的视图

这是我的代码:

package com.stylingandroid.viewpager;

import com.viewpagerindicator.TitlePageIndicator;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;

public class ViewPagerActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ViewPagerAdapter adapter = new ViewPagerAdapter(this);
        ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
        TitlePageIndicator indicator = (TitlePageIndicator) findViewById(R.id.indicator);
        pager.setAdapter(adapter);
        indicator.setViewPager(pager);
    }
}
这里是适配器:

package com.stylingandroid.viewpager;

import android.content.Context;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.TextView;

import com.viewpagerindicator.TitleProvider;

public class ViewPagerAdapter extends PagerAdapter
    implements TitleProvider
{
    private static String[] titles = new String[]
    {
        "Page 1",
        "Page 2",
        "Page 3"
    };
    private final Context context;

    public ViewPagerAdapter( Context context )
    {
        this.context = context;
    }

    @Override
    public String getTitle( int position )
    {
        return titles[ position ];
    }

    @Override
    public int getCount()
    {
        return titles.length;
    }

    @Override
    public Object instantiateItem( View pager, int position )
    {
        TextView v = new TextView( context );
        v.setText(titles[position]);

        ((ViewPager)pager).addView(v,0);

        return v;
    }

    @Override
    public void destroyItem( View pager, int position, Object view )
    {
        ((ViewPager)pager).removeView( (TextView)view );
    }

    @Override
    public boolean isViewFromObject( View view, Object object )
    {
        return view.equals( object );
    }

    @Override
    public void finishUpdate( View view ) {}

    @Override
    public void restoreState( Parcelable p, ClassLoader c ) {}

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public void startUpdate( View view ) {}
}

您需要修改
PagerAdapter
中的
InstanceItem()
方法,动态构建每个视图,而不是每次简单地添加
TextView
。例如,可以为每个位置充气不同的布局:

@Override
public Object instantiateItem( View pager, int position )
{
    LayoutInflator inflator = LayoutInflator.from( context );
    View v = null;
    switch( position )
    {
        case 0:
            v = inflator.inflate( R.layout.layout1, (ViewPager)pager, false );
            break;
        case 1:
            v = inflator.inflate( R.layout.layout2, (ViewPager)pager, false );
            break;
        .
        .
        .
    }
    v.setText(titles[position]);

    ((ViewPager)pager).addView(v,0);

    return v;
}

你已经有代码了,但我想指出的是,如果你要充气,这需要在那里

@Override
public boolean isViewFromObject( View view, Object object )
{
    return view.equals( object );
}