1. 程式人生 > >學習安卓小碼哥自定義控制元件的筆記(三)

學習安卓小碼哥自定義控制元件的筆記(三)

package com.example.wtz.viewpagerdemo;

import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.DragEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private ArrayList<TextView> mTextViews;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);

        initData();

        viewPager.setAdapter(new PagerAdapter() {
            @Override
            public int getCount() {
                return mTextViews.size();
            }

            @Override
            public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
                TextView textView = mTextViews.get((int)object);
                return view == textView;
            }

            //去建立一個View,返回出去,當前ViewPager中就會去展示這個View了,這個View會被新增到ViewPager中
            //position代表這個View要加到哪個位置去顯示
            //container代表就是當前的ViewPager
            @NonNull
            @Override
            public Object instantiateItem(@NonNull ViewGroup container, int position) {
                TextView textView = mTextViews.get(position);
                container.addView(textView);
                //不要求一定是View
                return position;
            }

            //有新增就有刪除,不然ViewPager的效率不行,這裡負責移除一些不展示的View
            @Override
            public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
//                super.destroyItem(container, position, object);

                TextView textView = mTextViews.get((int)object);
                container.removeView(textView);
            }
        });
    }

    private void initData() {
        mTextViews = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            TextView textView = new TextView(getApplicationContext());
            textView.setTextColor(Color.RED);
            textView.setText("第" + i + "個View");
            textView.setTextSize(24);
            mTextViews.add(textView);
        }
    }
}

在這裡插入圖片描述