-1

How to get month and year in android? (In Ascending and Descending order when we click on the left and the right arrows).

I am attaching the screenshot for reference

https://s28.postimg.org/gyuzzumkd/time_date.jpg

I used some of the code from his 0x5f3759df answer:

My code:

import android.app.DatePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Fragment_A extends Fragment implements OnClickListener {

    private ListView list;
    ImageButton next,previous;
    ImageView newmemory;
    TextView tv;

    public Fragment_A() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootview = inflater.inflate(R.layout.fragment_a, container, false);
        // call the views with this layout
        list = (ListView) rootview.findViewById(R.id.listView1);
        next = (ImageButton) rootview.findViewById(R.id.ibLeftarrow);
        previous = (ImageButton) rootview.findViewById(R.id.ibRightarrow);
        newmemory = (ImageView)rootview.findViewById(R.id.ivNewMemory);
        tv = (TextView) rootview.findViewById(R.id.tvMonth);
        next.setOnClickListener(this);
        previous.setOnClickListener(this);
        newmemory.setOnClickListener(this);
        CustomAdapterA adapter = new CustomAdapterA(getActivity());
        list.setAdapter(adapter);
        return rootview;    
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(v.getId()==R.id.ibLeftarrow)
        {
            createDialogWithoutDateField().show();
        }
        else if (v.getId()==R.id.ibRightarrow)
        {
            createDialogWithoutDateField().show();
        }
        else  if (v.getId()==R.id.ivNewMemory)
        {
             Intent i = new Intent(getActivity(), NewMemory.class);
             startActivity(i);
        }       
    }

     private DatePickerDialog createDialogWithoutDateField(){

            DatePickerDialog dpd = new DatePickerDialog(getActivity(), datePickerListener ,2014,1, 24);
            try{
            java.lang.reflect.Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields();
            for (java.lang.reflect.Field datePickerDialogField : datePickerDialogFields) { 
                if (datePickerDialogField.getName().equals("mDatePicker")) {
                    datePickerDialogField.setAccessible(true);
                    DatePicker datePicker = (DatePicker) datePickerDialogField.get(dpd);
                    java.lang.reflect.Field[] datePickerFields = datePickerDialogField.getType().getDeclaredFields();
                    for (java.lang.reflect.Field datePickerField : datePickerFields) {
                        Log.i("test", datePickerField.getName());
                       if ("mDaySpinner".equals(datePickerField.getName())) {
                          datePickerField.setAccessible(true);
                          Object dayPicker = new Object();
                          dayPicker = datePickerField.get(datePicker);
                          ((View) dayPicker).setVisibility(View.GONE);
                       }
                    }
                 }

              }
            }catch(Exception ex){
            }
            return dpd;

             }

     private DatePickerDialog.OnDateSetListener datePickerListener 
     = new DatePickerDialog.OnDateSetListener() {

// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
        int selectedMonth, int selectedDay) {

    int year = selectedYear;
    int month = selectedMonth;

    tv.setText(new StringBuilder().append(month+1)
            .append(" ").append(year)
               .append(" "));


 }
};

}
Cœur
  • 37,241
  • 25
  • 195
  • 267
Srikanth
  • 33
  • 1
  • 1
  • 10
  • You can use [pickers](http://developer.android.com/guide/topics/ui/controls/pickers.html). [Related SO question](http://stackoverflow.com/questions/21321789/android-datepicker-change-to-only-month-and-year) – yildirimyigit Aug 28 '14 at 08:03

3 Answers3

1

On press of Previous button

if (mCalendar.get(Calendar.MONTH) == mCalendar
                                .getActualMinimum(Calendar.MONTH)) {
                            mCalendar.set((mCalendar.get(Calendar.YEAR) - 1),
                                    mCalendar.getActualMaximum(Calendar.MONTH), 1);
                        } else {
                            mCalendar.set(Calendar.MONTH,
                                    mCalendar.get(Calendar.MONTH) - 1);

                        }

on press of Next button

if (mCalendar.get(Calendar.MONTH) == mCalendar
                                    .getActualMaximum(Calendar.MONTH)) {
                                mCalendar.set((mCalendar.get(Calendar.YEAR) + 1),
                                        mCalendar.getActualMinimum(Calendar.MONTH), 1);
                            } else {
                                mCalendar.set(Calendar.MONTH,
                                        mCalendar.get(Calendar.MONTH) + 1);

                            }

Initialise mCalendar like this in onCreate()

Calendar mCalendar = Calendar.getInstance();

To get the month and year

String str = android.text.format.DateFormat.format("MMMM yyyy", mCalendar).toString();
Aniruddha
  • 4,477
  • 2
  • 21
  • 39
0

You can use getInstance() function to get calendar date then parse year and month into array of String based on button event listener (left right arrows). below are the code of getinstance() function :

 final Calendar c = Calendar.getInstance();
    year = c.get(Calendar.YEAR);
    month = c.get(Calendar.MONTH);
G.Nader
  • 847
  • 7
  • 9
0
    dateFormat = new SimpleDateFormat("dd-MMMM-yyyy", locale);


    c = Calendar.getInstance();
    String date = dateFormat.format(c.getTime());


    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);
    updateDisplayLeaveDate();
}

private void updateDisplayLeaveDate() {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, mYear);
    cal.set(Calendar.MONTH, mMonth);
    cal.set(Calendar.DAY_OF_MONTH, mDay);
    dateMorning = cal.getTime();

    String date = dateFormat.format(dateMorning);
    tvLeaveDateDisplay.setText(date);
    leaveDate = Util.getDateFormat(mDay, mMonth, mYear);

}

// the callback received when the user "sets" the date in the dialog
private DatePickerDialog.OnDateSetListener mDateSetListenerMorning = new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        mYear = year;
        mMonth = monthOfYear;
        mDay = dayOfMonth;
        updateDisplayLeaveDate();
    }
};
Eng.amany
  • 25
  • 1
  • 5