android - 如何按前一天的按钮,前一天的日历应该来?
问题描述
我在我的应用程序 ui演示中使用以下日历
我想更改上一个和下一个按钮,以便在单击它时转到上一个和第二天。
示例:因此,如果标记了月份的 22 并且我单击“上一个”,则应该选择 21。
主要活动
public class MainActivity extends AppCompatActivity implements OnClickListener
{
public LinearLayout l1;
Toolbar toolbar;
private static Boolean set = false;
public PendingIntent pendingIntent;
public AlarmManager alarmManager;
ImageView btnsync;
private FirebaseUser mFirebaseUser;
private FirebaseAuth mFirebaseAuth;
public DatabaseReference mDatabase;
public String mUserId;
TextView email;
private ProgressDialog pDialog;
private ProgressDialog pD;
Toast toast;
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mFirebaseAuth = FirebaseAuth.getInstance();
mFirebaseUser = mFirebaseAuth.getCurrentUser();
mTitleTextView = (TextView) findViewById(R.id.currentMonth);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
calendarView = (GridView) findViewById(R.id.calendar_grid);
_calendar = Calendar.getInstance(Locale.getDefault());
date = String.format("%02d", Integer.parseInt("" + _calendar.get(Calendar.DATE)));
month = _calendar.get(Calendar.MONTH) + 1;
year = _calendar.get(Calendar.YEAR);
navigationView = (NavigationView) findViewById(R.id.nav_view);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
l1 = (LinearLayout) findViewById(R.id.R1);
View view = null;
dba = new DataAdapter(getApplicationContext());
dbn = new DataHelper(getApplicationContext());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.ColorPrimaryDark));
}
try {
//create local database
dba.createDB();
dbn.createDB();
} catch (IOException e) {
e.printStackTrace();
}
//initialize firebase database for note
if (mFirebaseUser != null) {
mUserId = mFirebaseUser.getUid();
mDatabase = FirebaseDatabase.getInstance().getReference();
}
try {
//get current day data from database
nirnay = dba.getdata("" + date, "" + month, "" + year);
} catch (Exception e) {
//data not available in database so update app to get new
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("Hindi Calendar Update");
alertDialog.setMessage("No data available please update application for more data");
alertDialog.setButton("Update", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
intent.setData(Uri.parse("market://details?id=" + appPackageName));
} catch (android.content.ActivityNotFoundException anfe) {
intent.setData(Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName));
}
startActivity(intent);
finish();
}
});
alertDialog.show();
}
//set grid data
adapter = new GridCell_Adapter(getApplicationContext(), R.id.day_event, month, year, view, calendarView, l1);
adapter.notifyDataSetChanged();
//initialize viewpager
viewPager = (ViewPager) findViewById(R.id.viewpager);
adp = new CustomPager_Adapter(this, adapter, l1);
viewPager.setAdapter(adp);
//set current month for viewpager
int item = getpos(month, year);
//viewpager swipe animation
viewPager.setPageTransformer(false, new ViewPager.PageTransformer() {
@Override
public void transformPage(View page, float position) {
page.setRotationY(position * -30);
}
});
setupnavigationDrawer();
//set toolbar title of month from database
final Cursor cursor = dba.getTitle();
cursor.moveToPosition(0);
mTitleTextView.setText(cursor.getString(1));
viewPager.addOnPageChangeListener(new OnPageChangeListener() {
public void onPageSelected(int position) {
if (viewPager.getCurrentItem() == 0) {
if (toast == null || !toast.getView().isShown()) {
toast = Toast.makeText(MainActivity.this, "No further data", Toast.LENGTH_SHORT);
toast.show();
}
} else if (viewPager.getCurrentItem() == (viewPager.getAdapter().getCount() - 1)) {
if (toast == null || !toast.getView().isShown()) {
toast = Toast.makeText(MainActivity.this, "No further data, we will update the new data soon.", Toast.LENGTH_SHORT);
toast.show();
}
}
switch (position) {
//case equal to no of your month in viewpager
case 0:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 1:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 2:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 3:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 4:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 5:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 6:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 7:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 8:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 9:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 10:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 11:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 12:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
case 13:
cursor.moveToPosition(position);
mTitleTextView.setText(cursor.getString(1));
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewPager.setCurrentItem(item);
if (set == false) {
try {
GridCell_Adapter.getData("" + date, "" + String.format("%02d", month), "" + year, MainActivity.this);
set = true;
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Data Not Found here", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.previous:
if (viewPager.getCurrentItem() == 0) {
if (toast == null || !toast.getView().isShown()) {
toast = Toast.makeText(MainActivity.this, "No further data", Toast.LENGTH_SHORT);
toast.show();
}
} else {
viewPager.setCurrentItem(getItem(-1), true);
}
return true;
case R.id.next:
if (viewPager.getCurrentItem() == (viewPager.getAdapter().getCount() - 1)) {
if (toast == null || !toast.getView().isShown()) {
toast = Toast.makeText(MainActivity.this,
"No further data, we will update the new data soon.", Toast.LENGTH_SHORT);
toast.show();
}
} else {
viewPager.setCurrentItem(getItem(+1), true);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private String getCurrentVersion() {
PackageManager pm = this.getPackageManager();
PackageInfo pInfo = null;
try {
pInfo = pm.getPackageInfo(this.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e1) {
e1.printStackTrace();
}
String currentVersion = pInfo.versionName;
return currentVersion;
}
private void setupnavigationDrawer() {
getProfileInformation();
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger on item Click of navigation menu
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.home:
Intent intent = getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
drawer.closeDrawers();
break;
case R.id.all_note:
startActivity(new Intent(MainActivity.this, All_Note.class));
drawer.closeDrawers();
break;
case R.id.festival:
startActivity(new Intent(MainActivity.this, Festival.class));
drawer.closeDrawers();
break;
case R.id.festival_planing:
startActivity(new Intent(MainActivity.this, HolidayPlanning.class));
drawer.closeDrawers();
break;
case R.id.choghadiya:
startActivity(new Intent(MainActivity.this, Choghdaiya.class));
drawer.closeDrawers();
return true;
case R.id.rashi:
startActivity(new Intent(MainActivity.this, Rashi.class));
drawer.closeDrawers();
return true;
case R.id.location:
startActivity(new Intent(MainActivity.this, Search_City.class));
drawer.closeDrawers();
return true;
case R.id.event:
/* set here month and year
* if your database has more month then year then according to
* set positon 13 and positon 12 */
int pos = viewPager.getCurrentItem();
util.month = pos ;
util.year = year;
if (pos == 13) {
util.month = 1;
util.year = 2019;
} else if (pos == 12) {
util.month = 12;
util.year = 2018;
}
startActivity(new Intent(MainActivity.this, Detail.class));
drawer.closeDrawers();
return true;
case R.id.check_for_update:
checkUpdate();
return true;
case R.id.rate:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName())));
break;
case R.id.share:
try {
Intent shareAppIntent = new Intent(android.content.Intent.ACTION_SEND);
shareAppIntent.setType("text/plain");
shareAppIntent.putExtra(android.content.Intent.EXTRA_TEXT, getString(R.string.app_name) + " \nhttps://play.google.com/store/apps/details?id=" + getPackageName());
startActivity(Intent.createChooser(shareAppIntent, "Share via"));
} catch (Exception e) {
}
break;
}
return true;
}
});
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerClosed(View drawerView) {
// Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank
super.onDrawerClosed(drawerView);
}
@Override
public void onDrawerOpened(View drawerView) {
// Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank
super.onDrawerOpened(drawerView);
}
};
细节.Java
public class Detail extends AppCompatActivity implements OnClickListener {
private Button prev = null;
private Button next = null;
public static utility util = MainActivity.util;
DataAdapter dba;
RecyclerView rv;
public static ViewPager viewPager;
private TabLayout tabLayout;
private ArrayList<HashMap<String, String>> data;
Context c;
public TextView mTitleTextView;
ViewPagerAdapter adapter;
int current;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.ColorPrimaryDark));
}
setContentView(R.layout.tab_bar);
Toolbar toolbar = (Toolbar) findViewById(R.id.action);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.pager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
mTitleTextView = (TextView) findViewById(R.id.currentMonth);
mTitleTextView.setTextSize(22);
dba = new DataAdapter(this);
System.out.println("pos...month.."+util.month);
/* util.month=*/
mTitleTextView.setText("" + getMonth(util.month - 1) + "-" + util.year);
prev = (Button) findViewById(R.id.prev);
prev.setOnClickListener(this);
next = (Button) findViewById(R.id.next);
next.setOnClickListener(this);
c = this;
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
adapter.notifyDataSetChanged();
tabLayout.setOnTabSelectedListener(
new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
super.onTabSelected(tab);
current = tab.getPosition();
}
});}
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentStatePagerAdapter {
final int PAGE_COUNT = 3;
private String[] tabs = {"calendar", "poonam", "amash"};
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return Month_fragment.newInstance(position);
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
}
public boolean onSupportNavigateUp() {
finish();
return true;
}
public void setvalue(int month, int year) {
Cursor cursor = dba.getDetails(month, year, current);
data = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
map.put("tithi", (cursor.getString(5) + " " + cursor.getString(0)));
map.put("nakshatra", cursor.getString(1));
map.put("chandra", cursor.getString(2));
map.put("date", (cursor.getString(3) + " - " + month + " - " + year));
map.put("utshav", cursor.getString(4));
map.put("day", cursor.getString(6));
data.add(map);
map = new HashMap<String, String>();
}
rv = (RecyclerView) findViewById(R.id.recycler_view);
rv.setLayoutManager(new LinearLayoutManager(this));
Detail_Adapter ada = new Detail_Adapter(getApplicationContext(), data);
rv.setAdapter(ada);
ada.notifyDataSetChanged();
adapter.notifyDataSetChanged();
}
public static String getMonth(int month) {
String monthname = "" + new DateFormatSymbols().getMonths()[month];
return monthname;
}
public void onBackPressed() {
super.onBackPressed();
}
@Override
public void onClick(View v) {
try {
switch (v.getId()) {
case R.id.prev:
if (util.month == 12 && util.year == 2017) {
} else
util.month--;
if (util.month == 1) {
util.month = 1;
util.year = 2018;
setvalue(1, 2018);
mTitleTextView.setText("" + getMonth(0) + "-" + "2018");
util.month = 13;
util.year = 2017;
} else if (util.month == 0 && util.year == 2018) {
util.month = 12;
util.year = 2017;
setvalue(12, 2017);
mTitleTextView.setText("" + getMonth(11) + "-" + "2017");
} else if (util.month == 0 && util.year == 2019) {
util.month = 12;
util.year = 2018;
setvalue(12, 2018);
mTitleTextView.setText("" + getMonth(11) + "-" + "2018");
} else {
setvalue(util.month, util.year);
mTitleTextView.setText("" + getMonth(util.month - 1) + "-" + util.year);
}
break;
case R.id.next: {
if (util.month == 1 && util.year == 2019) {
} else
util.month++;
System.out.println("current month : " + util.month + " - " + util.year);
if (util.month == 13 && util.year == 2017) {
util.month = 1;
util.year = 2018;
setvalue(1, 2018);
mTitleTextView.setText("" + getMonth(0) + "-" + "2018");
} else if (util.month == 13 && util.year == 2018) {
util.month = 1;
util.year = 2019;
setvalue(1, 2019);
mTitleTextView.setText("" + getMonth(0) + "-" + "2019");
} else {
setvalue(util.month, util.year);
mTitleTextView.setText("" + getMonth(util.month - 1) + "-" + util.year);
}
}
break;
default:
break;
}
} catch (Exception e) {
}
}
}
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<include layout="@layout/actionbar"
android:id="@+id/action"
/>
<android.support.design.widget.TabLayout
android:layout_below="@+id/action"
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabIndicatorColor="@color/white"
app:tabMode="fixed"
android:background="@color/Primary_light"
app:tabTextAppearance="@style/TabLayoutTextStyle"
app:tabTextColor="@color/tra_white"
app:tabSelectedTextColor="@color/white"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_below="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
>
</android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/bottomLayout"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="2sp"
android:paddingRight="2sp"
android:background="@color/white">
<Button
android:id="@+id/prev"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="4"
android:layout_margin="2dp"
android:text="Previous"
android:theme="@style/AppTheme.Button"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/white" />
<Button
android:id="@+id/next"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="4"
android:text="Next"
android:layout_margin="2dp"
android:theme="@style/AppTheme.Button"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/white" >
</Button>
</LinearLayout>
我已经尝试了很长时间,我得到了错误
解决方案
推荐阅读
- prestashop-1.7 - 解释 Prestashop 上的模块联系表
- java - 从 HashMap 返回 ArrayList
- angular - 角度 7 中的 require("http2")
- reactjs - React 如何让子组件拥有自己的状态
- c++ - 用 Qt::black 初始化 QColorDialog 总是返回黑色
- angular - Angular 获取 url 的最后一部分
- xml - Eclipse IDE 不填充示例 XML 文件中的元素和属性
- javascript - 使用 Javascript 计算 HTML 中的行数
- sql - 复杂的 SQL 请求
- azure-devops - 将用户添加到项目而不是组织的后果