使用自定义适配器在多个视图之间滑动

时间:2012-09-10 18:22:10

标签: android

我正在尝试创建一个可在三种不同xml布局之间滑动的图库应用程序。应用程序看起来非常错误:

enter image description here

我的XML文件是:

linear.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
    >
<EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="one"/>
<EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="two"
        android:gravity="center"
        android:layout_weight="1"/>
<EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="three"
        android:layout_gravity="right"/>
</LinearLayout>

table.xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">
<TextView android:text="What is your name?"
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:gravity="center"/>
<TableRow>
    <TextView android:text="@string/firstname"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content" />
    <EditText android:text="John"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content" />
</TableRow>
<TableRow>
    <TextView android:text="@string/lastname"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content" />
    <EditText android:text="Poe"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content" />
</TableRow>
</TableLayout>

and the gallery.xml:
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>

我对BaseAdapter的实现:

public class LayoutsAdapter extends BaseAdapter {
    private LayoutInflater mInflater;

    public LayoutsAdapter(Context context) {
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return 3;
    }

    @Override
    public Object getItem(int i) {
        switch (i) {
            case 0:
                return R.layout.linear;
            case 1:
                return R.layout.table;
            case 2:
                return R.layout.relative;
            default:
                return -1;
        }
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View convertView, ViewGroup viewGroup) {
        convertView = mInflater.inflate((Integer)getItem(i), null);
        return convertView;
    }
}

我对android很新,所以我期待着你的帮助。

3 个答案:

答案 0 :(得分:1)

我认为你应该使用ViewPager。在ViewPager上查看以下信息:

http://thepseudocoder.wordpress.com/2011/10/05/android-page-swiping-using-viewpager/

另请考虑您可能希望将碎片与ViewPager结合使用。

但我认为ViewPager正是您所寻找的。实际上它比做得更顺畅 你拥有布局的东西。

答案 1 :(得分:1)

我建议你使用Jake Whartons ViewPageIndicator(或者只是普通的ViewPager):

为每个布局创建一个Fragment,并使用片段中的onCreateView()方法将布局设置为片段:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {

        return inflater.inflate(R.layout.layout, container, false);
    }

现在创建一个FragmentPagerAdapter应该有一个名为getItem()的方法。切换位置并将其设置为碎片:

    @Override public Fragment getItem ( int position){

        switch (position) {
            case 0:
                TestFragment fragment = new TestFragment();
                return fragment;

            case 1:
                TestFragment2 fragment2 = new TestFragment2();
                return fragment2;
        }

        return defaultFragment fragment3 = new defaultFragment();
        return fragment3;
    }

现在你应该可以轻松地滑动到你的布局(片段)

答案 2 :(得分:0)