마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

달력을 뷰페이저로 출력하는데, 현재 날에 맞는 달을 가장 먼저 출력하고싶습니다

0 추천

뷰페이저 주요 코드입니다

public class monthpageAdapter extends PagerAdapter{

    private LayoutInflater mInflater;
    private Context mContext;
    private GregorianCalendar today = new GregorianCalendar();
    public List<Map<String, Object>> yearSchedule;

    public monthpageAdapter(Context context, List<Map<String, Object>> _yearSchedule) {
        super();
        mContext = context;
        mInflater = LayoutInflater.from(context);
        yearSchedule=_yearSchedule;
    }

    public int getCount() {
        return 12;
    }

    private List<Map<String, Object>> getMonthlyScheduleList(int month) {
        List<Map<String, Object>> monthlySchedule = new ArrayList<Map<String, Object>>();
        for (Map<String, Object> map : yearSchedule) {
            String mMonth = map.get("first_date").toString().substring(5, 7);
            String preMonth = map.get("last_date").toString().substring(5, 7);
            if (Integer.parseInt(mMonth) == month + 1
                    || Integer.parseInt(preMonth) == month + 1) {
                monthlySchedule.add(map);
            }
        }
        return monthlySchedule;
    }
    public Object instantiateItem(View pager, int position){
        View v = null;
        CalendarView calendar;
        switch(position){
            case 0:
                v = mInflater.inflate(R.layout.mpage1, null);
                calendar = new CalendarView(mContext, 0,
                        today.get(GregorianCalendar.YEAR), getMonthlyScheduleList(0));
                ((LinearLayout) v).addView(calendar);
                break;
            case 1:
                v = mInflater.inflate(R.layout.mpage2, null);
                calendar = new CalendarView(mContext, 1,
                        today.get(GregorianCalendar.YEAR), getMonthlyScheduleList(1));
                ((LinearLayout) v).addView(calendar);
                break;
            case 2:
                v = mInflater.inflate(R.layout.mpage3, null);
                calendar = new CalendarView(mContext, 2,
                        today.get(GregorianCalendar.YEAR), getMonthlyScheduleList(2));
                ((LinearLayout) v).addView(calendar);
                break;
            case 3:
                v = mInflater.inflate(R.layout.mpage4, null);
                calendar = new CalendarView(mContext, 3,
                        today.get(GregorianCalendar.YEAR), getMonthlyScheduleList(3));
                ((LinearLayout) v).addView(calendar);
                break;
            case 4:
                v = mInflater.inflate(R.layout.mpage5, null);
                calendar = new CalendarView(mContext, 4,
                        today.get(GregorianCalendar.YEAR), getMonthlyScheduleList(4));
                ((LinearLayout) v).addView(calendar);
                break;
            case 5:
                v = mInflater.inflate(R.layout.mpage6, null);
                calendar = new CalendarView(mContext, 5,
                        today.get(GregorianCalendar.YEAR), getMonthlyScheduleList(5));
                ((LinearLayout) v).addView(calendar);
                break;
            case 6:
                v = mInflater.inflate(R.layout.mpage7, null);
                calendar = new CalendarView(mContext, 6,
                        today.get(GregorianCalendar.YEAR), getMonthlyScheduleList(6));
                ((LinearLayout) v).addView(calendar);
                break;
            case 7:
                v = mInflater.inflate(R.layout.mpage8, null);
                calendar = new CalendarView(mContext, 7,
                        today.get(GregorianCalendar.YEAR), 
........
        }
        ((ViewPager)pager).addView(v,null);
        return v;
    }
    public void destroyItem(View pager, int position, Object view) {
        ((ViewPager)pager).removeView((View)view);
    }
    public boolean isViewFromObject(View v, Object obj) {
        return v == obj;
    }
}
이 외에 달력을 생성하는 calendarview와 뷰페이저 출력하는 Activity 자바가 있습니다
현재가 2월이니까, 2월을 먼저 출력하고 왼쪽으로 넘길시 3월,오른쪽으론 1월 이렇게 형식은 유지하면서 
현재에 맞는 달을 띄우고 싶은데, 아이디어가 도통 생각이 안나네요 어떻게 하면 좋을까요? 조언 구합니다
현재는 1월서부터 순서대로 쭈욱 뜹니다
익명사용자 님이 2016년 2월 22일 질문
본문을 좀 더 읽기 쉽게 만들어 보세요. 잘리는 글자도 없게 해보시고요
소스를 보니깐 pageadapter에서 page 값보고 달력을 출력하는 것 같은데요

보통은 무한페이지뷰형태를 가지고요

기준달 Calendar값에 +1 -1 하는 형태로 달력을 보여줍니다

http://blog.hansune.com/599 참고하세요

1개의 답변

0 추천
0번페이지에 1월부터 11번페이지에 12월이라고 한다면 아래와 같이 하면 간단하게 되지 않을까요

pager.setCurrentItem(1) // 2월인 경우
Gradler (109,780 포인트) 님이 2016년 2월 23일 답변
아 이런게 있었군요 감사합니다
...