學習安卓小碼哥自定義控制元件的筆記(三)
阿新 • • 發佈:2018-12-11
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); } } }