这是图像,我想只显示当前的月份而不是下一天而不是之前的几天。 这是我的适配器代码,我管理并设置适配器的日期。在类文件中我已经在gridview中设置了适配器。你可以帮忙吗?
package com.ManageMyTimeTableAdapter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.ManageMyTimeTable.CalendarView;
import com.ManageMyTimeTable.DaliyScreenActivity;
import com.ManageMyTimeTable.DateUtils;
import com.ManageMyTimeTable.R;
public class CalendarAdapter extends BaseAdapter{
private Date[] calendarGrid;
private Context mContext;
private LayoutInflater inflater;
private static Calendar mCal;
private String today;
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
public CalendarAdapter(Context context){
mContext = context;
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mCal = Calendar.getInstance();
CalendarView.dateStore.clear();
initCalendar(mCal);
}
private void initCalendar(Calendar cal){
Calendar c = Calendar.getInstance();
c.setTime(cal.getTime());
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), 1);
int startOfWeek = c.get(Calendar.DAY_OF_WEEK);
Log.e("fdfdfdf",""+startOfWeek);
Log.e("-1 vagar nu",""+c.get(Calendar.DAY_OF_WEEK));
c.add(Calendar.DATE, -startOfWeek);
calendarGrid = new Date[6 * 7];
int gridCount = 0;
for (int week = 0; week < 6; week++) {
for (int day = 0; day < 7; day++) {
Date dt = c.getTime();
dt.setHours(0);
dt.setMinutes(0);
dt.setSeconds(0);
calendarGrid[gridCount++] = dt;
c.add(Calendar.DATE, 1);
}
}
}
public void nextMonth() {
mCal.set(mCal.get(Calendar.YEAR), mCal.get(Calendar.MONTH) + 1, mCal.get(Calendar.DATE));
initCalendar(mCal);
notifyDataSetChanged();
}
public void prevMonth() {
mCal.set(mCal.get(Calendar.YEAR), mCal.get(Calendar.MONTH) - 1, mCal.get(Calendar.DATE));
initCalendar(mCal);
notifyDataSetChanged();
}
public Calendar getCurrentCalendar() {
return mCal;
}
@Override
public int getCount() {
return calendarGrid.length;
}
@Override
public Date getItem(int position) {
return calendarGrid[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.raw_my_calendar, null);
holder.txtDate = (TextView) convertView.findViewById(R.id.txtCalDate);
holder.txtEventCount = (TextView) convertView.findViewById(R.id.txtEventCount);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
Date date = getItem(position);
holder.txtDate.setText(String.format("%2d", date.getDate()));
holder.txtDate.setTag(format.format(date).toString());
String keyDate = DateUtils.formatDate(DateUtils.DB_DATE_FORMAT, date);
setStyle(keyDate, position, holder.txtDate, convertView);
if(CalendarView.dateStore.size()>= position+1){
Log.d(" Calender Adapter "," Clear arrayList **** "+CalendarView.dateStore.size());
CalendarView.dateStore.clear();
}
CalendarView.dateStore.add(format.format(date).toString());
return convertView;
}
private void setStyle(String dateKey, int position, TextView txt, View convertView){
if (dateKey.equals(today))
convertView.setBackgroundColor(Color.parseColor("#88D23218"));
else
convertView.setBackgroundColor(Color.parseColor("#88CCCCCC"));
if (getItem(position).getMonth() != mCal.get(Calendar.MONTH))
txt.setTextColor(Color.parseColor("#FF787878"));
else
txt.setTextColor(Color.parseColor("#FF000000"));
if(DaliyScreenActivity.month_member_id_arr.contains(txt.getText().toString())){
convertView.setBackgroundColor(Color.YELLOW);
convertView.setBackgroundColor(android.graphics.Color.rgb(230, 187, 60));
}
}
static class ViewHolder {
TextView txtDate;
TextView txtEventCount;
}
}
答案 0 :(得分:1)
检查当前月份不在的单元格设置其灰色文本颜色的位置,并将文本颜色设置为与背景相同的颜色,或者更好地为这些单元格设置空白文本。
if (getItem(position).getMonth() != mCal.get(Calendar.MONTH))
txt.setTextColor(Color.parseColor("#88CCCCCC"));
或
if (getItem(position).getMonth() != mCal.get(Calendar.MONTH))
txt.setText("");
答案 1 :(得分:1)
使用getView
方法...更改上一个if..else
到此,
if (getItem(position).getMonth() != mCal.get(Calendar.MONTH))
{
txt.setTextColor(Color.parseColor("#FF787878"));
}
else
{
txt.setTextColor(Color.parseColor("#FF000000"));
if(DaliyScreenActivity.month_member_id_arr.contains(txt.getText().toString())){
convertView.setBackgroundColor(Color.YELLOW);
convertView.setBackgroundColor(android.graphics.Color.rgb(230, 187, 60));
}
}
我的意思是说保持代码在else
部分中将背景更改为黄色。