0

ここに画像の説明を入力してください これが画像です。次の日や前の日ではなく、当月の日のみを表示したいと思います。これが私のアダプターコードで、アダプターから日数を管理および設定します。クラスファイルで、gridviewでアダプターを設定しました。手伝ってもらえますか?

パッケージ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;
}

}

4

2 に答える 2

1

今月にないセルが灰色のテキストの色を設定し、テキストの色を背景と同じ色に設定するか、それらのセルに空のテキストを設定する方がよいかどうかを確認します。

if (getItem(position).getMonth() != mCal.get(Calendar.MONTH))
    txt.setTextColor(Color.parseColor("#88CCCCCC"));

また

if (getItem(position).getMonth() != mCal.get(Calendar.MONTH))
    txt.setText("");
于 2012-08-29T12:14:57.130 に答える
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部分の背景を黄色に変更するということです。

于 2012-09-08T07:20:21.347 に答える