如何在gridview中仅显示当前月份日?

时间:2012-08-29 11:33:42

标签: android android-gridview android-calendar

enter image description here     这是图像,我想只显示当前的月份而不是下一天而不是之前的几天。 这是我的适配器代码,我管理并设置适配器的日期。在类文件中我已经在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;
}

}

2 个答案:

答案 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部分中将背景更改为黄色。