Я пытаюсь создать календарь, который выглядит как внутренний календарь Android.Я хотел бы знать, как отслеживать каждую ячейку в моем View.
У меня есть адаптер Gridcell, расширяющий базовый адаптер, вот код:
public View getView(int position, View convertView, ViewGroup parent)
{
int[][] MatrixPointer = new int[5][7];
View row = convertView;
if (row == null)
{
LayoutInflater inflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.calendar_day_gridcell, parent, false);
}
// Get a reference to the Day gridcell
gridcell = (Button) row.findViewById(R.id.calendar_day_gridcell);
if(position==34||position==6||position==13||position==20||position==27)
{
View v=(View) row.findViewById(R.id.right_border);
v.setVisibility(View.GONE);
}
if(position>=7)
{
View v;
v=(View) row.findViewById(R.id.top_border_double);
v.setVisibility(View.GONE);
}
if(position<=27)
{
View v=(View) row.findViewById(R.id.bottom_border_double);
v.setVisibility(View.GONE);v=(View) row.findViewById(R.id.bottom_border);
v.setVisibility(View.GONE);
}
// ACCOUNT FOR SPACING
Log.d(tag, "Current Day: " + getCurrentDayOfMonth());
String[] day_color = list.get(position).split("-");
String theday = day_color[0];
String themonth = day_color[2];
String theyear = day_color[3];
if ((!eventsPerMonthMap.isEmpty()) && (eventsPerMonthMap != null))
{
if (eventsPerMonthMap.containsKey(theday))
{
num_events_per_day = (TextView) row.findViewById(R.id.num_events_per_day);
Integer numEvents = (Integer) eventsPerMonthMap.get(theday);
num_events_per_day.setText(numEvents.toString());
}
}
// Set the Day GridCell
gridcell.setText(theday);
gridcell.setTag(theday + "-" + themonth + "-" + theyear);
Log.d(tag, "Setting GridCell " + theday + "-" + themonth + "-" + theyear + " \n Position: "+position);
if (day_color[1].equals("GREY"))
{
gridcell.setTextColor(Color.LTGRAY);
}
if (day_color[1].equals("WHITE"))
{
gridcell.setTextColor(Color.DKGRAY);
}
if (day_color[1].equals("BLUE"))
{
gridcell.setTextColor(getResources().getColor(R.color.static_text_color));
}
return row;
}
public int getCurrentDayOfMonth()
{
return currentDayOfMonth;
}
private void setCurrentDayOfMonth(int currentDayOfMonth)
{
this.currentDayOfMonth = currentDayOfMonth;
}
public void setCurrentWeekDay(int currentWeekDay)
{
this.currentWeekDay = currentWeekDay;
}
public int getCurrentWeekDay()
{
return currentWeekDay;
}
@Override
public void onClick(View v) {
}
}
Когда я использую метод onClick, он ничего не делает, скажем, например:
gridcell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gridcell.setText("TESTING");
}
});
не обновляет что-либо для моего просмотра, когда я нажимаю.Попытка также установить слушателя щелчка за пределами моего класса, в моей Деятельности, но то же самое без результата.Я хочу знать каждую ячейку сетки и другую информацию (например, текст, цвет).Когда я изменяю цвет gridcell внутри функции, это разрушает мой дизайн.Например,
if (day_color[1].equals("BLUE"))
{ gridcell.setBackgroundColor(Color.BLUE);
}
Если я сделаю это, это испортит мой дизайн.
Надеюсь, вы понимаете, о чем я, и посмотрите на мой код.
Спасибо!Radu