【问题标题】:Pager adapter with private methods without fragments in android带有私有方法的寻呼机适配器,在android中没有片段
【发布时间】:2015-02-06 15:16:03
【问题描述】:

是否可以在没有片段的情况下使用用户查看寻呼机。我用谷歌搜索,所有示例都使用片段来查看寻呼机。我想从我的列表中只加载一项,所以我想问一下是否可能。这是我的主要活动代码,我想将 UpdateDisplay 用于 viewpager。任何建议。

public class MainActivity extends Activity implements OnClickListener{

private Button prev, next;
private TextView tv;
private int number = 0;
private ArrayList<Integer> numbers;
private ViewPager pager;
private MyPagerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    prev = (Button) findViewById(R.id.prevButton);
    prev.setOnClickListener(this);
    next = (Button) findViewById(R.id.nextButton);
    next.setOnClickListener(this);
    numbers = new ArrayList<Integer>();
    for (int i=0;i<5;i++){
        numbers.add(i);
        Log.i("Sljedece elemente dodaje u listu", String.valueOf(i));
    }
    tv = (TextView) findViewById(R.id.rezultatTextView);
    pager = (ViewPager) findViewById(R.id.pager);
    adapter = new MyPagerAdapter();
    pager.setAdapter(adapter);

    updateDIsplay(number);
}

@Override
public void onClick(View v) {

    switch(v.getId()){
    case R.id.prevButton:
        number--;
        if (number==-1){
            number = 4;
        }
        updateDIsplay(number);
        break;
    case R.id.nextButton:
        number++;
        if (number==5){
            number = 0;
        }
        updateDIsplay(number);
        break;
    }

}

private void updateDIsplay(int z){

    tv.setText(String.valueOf(numbers.get(z)));

}

private class MyPagerAdapter extends PagerAdapter{

    @Override
    public int getCount() {
        return numbers.size();
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return false;
    }

}

}

【问题讨论】:

    标签: android android-layout android-activity android-fragments android-viewpager


    【解决方案1】:

    是的,有可能。使用PageAdapter。当调用 instantiateItem 时,您可以膨胀/实例化您的视图,并将其添加到容器中。例如:

    private class MyPagerAdapter extends PagerAdapter {
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            TextView view = new TextView(PagerActivity.this);
            view.setText("Item "+position);
            view.setGravity(Gravity.CENTER);
            view.setBackgroundColor(Color.argb(255, position * 50, position * 10, position * 50));
    
            container.addView(view);
            return view;
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View)object);
        }
    
        @Override
        public int getCount() {
            return 5;
        }
    
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return (view == object);
        }
    }
    

    【讨论】:

    • 你能不能不用添加新的文本视图,而是使用我已经声明的那个。我唯一需要的是当用户在屏幕上滑动时调用方法 updateDIsplay 。所以我不需要任何其他的textview,只需要调用方法updateDisplay(position)。我可以在寻呼机中这样做吗,或者那是不可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多