Android版面inflater不适用于Android日历

时间:2014-11-05 06:55:00

标签: android

  String testDate = "05/11/2014";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calendar);
    Locale.setDefault(Locale.US);

    rLayout = (LinearLayout) findViewById(R.id.text);
    month = (GregorianCalendar) Calendar.getInstance();
    itemmonth = (GregorianCalendar) month.clone();

    items = new ArrayList<String>();

    adapter = new CalendarAdapter(this, month);

    GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(adapter);

    handler = new Handler();
    handler.post(calendarUpdater);

    TextView title = (TextView) findViewById(R.id.title);
    title.setText(android.text.format.DateFormat.format("MMMM yyyy", month));

    RelativeLayout previous = (RelativeLayout) findViewById(R.id.previous);

    previous.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            setPreviousMonth();
            refreshCalendar();
        }
    });

    RelativeLayout next = (RelativeLayout) findViewById(R.id.next);
    next.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            setNextMonth();
            refreshCalendar();

        }
    });

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy",
            java.util.Locale.getDefault());


            try 
            {
                d = dateFormat.format(dateFormat.parse(testDate));
                d1 = dateFormat.format(dateFormat.parse(testDate));
                Log.d("Date",d);
                Log.d("Date1",d1);
            } 
            catch (ParseException e) 
            {
                e.printStackTrace();
            }

        if(d.equals(d1))
        {


            View v = null;
            if(v==null)
            {
            LayoutInflater vi = (LayoutInflater)CalendarView.this
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.calendar_layout, gridview,false);
            }
         TextView titleView = (TextView)v.findViewById(R.id.titleView);
         titleView.setText("abc");
        }

    gridview.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {

            TextView cdate = (TextView)v.findViewById(R.id.date);
            if(cdate instanceof TextView && !cdate.getText().equals("")) 
            {

                 TextView title  = (TextView) findViewById(R.id.title);
                title.setText(android.text.format.DateFormat.format("MMMM yyyy", month));

                testMonth=title.getText().toString();

                String day = cdate.getText().toString();
                Toast.makeText(getApplicationContext(),day+" "+testMonth,Toast.LENGTH_LONG).show();

            }

            // removing the previous view if added
            if (rLayout.getChildCount() > 0) {
                rLayout.removeAllViews();
            }
            desc = new ArrayList<String>();
            date = new ArrayList<String>();
            ((CalendarAdapter) parent.getAdapter()).setSelected(v);
            String selectedGridDate = CalendarAdapter.dayString
                    .get(position);
            String[] separatedTime = selectedGridDate.split("-");
            String gridvalueString = separatedTime[2].replaceFirst("^0*",
                    "");// taking last part of date. ie; 2 from 2012-12-02.
            int gridvalue = Integer.parseInt(gridvalueString);
            // navigate to next or previous month on clicking offdays.
            if ((gridvalue > 10) && (position < 8)) {
                setPreviousMonth();
                refreshCalendar();
            } else if ((gridvalue < 7) && (position > 28)) {
                setNextMonth();
                refreshCalendar();
            }
            ((CalendarAdapter) parent.getAdapter()).setSelected(v);

            for (int i = 0; i < Utility.startDates.size(); i++) {
                if (Utility.startDates.get(i).equals(selectedGridDate)) {
                    desc.add(Utility.nameOfEvent.get(i));
                }
            }

            if (desc.size() > 0) {
                for (int i = 0; i < desc.size(); i++) {
                    TextView rowTextView = new TextView(CalendarView.this);

                    // set some properties of rowTextView or something
                    rowTextView.setText("Event:" + desc.get(i));
                    rowTextView.setTextColor(Color.BLACK);

                    // add the textview to the linearlayout
                    rLayout.addView(rowTextView);

                }

            }

            desc = null;

        }

    });
}

protected void setNextMonth() {
    if (month.get(Calendar.MONTH) == month
            .getActualMaximum(Calendar.MONTH)) {
        month.set((month.get(Calendar.YEAR) + 1),
                month.getActualMinimum(Calendar.MONTH), 1);
    } else {
        month.set(Calendar.MONTH,
                month.get(Calendar.MONTH) + 1);
    }

}

protected void setPreviousMonth() {
    if (month.get(Calendar.MONTH) == month
            .getActualMinimum(Calendar.MONTH)) {
        month.set((month.get(Calendar.YEAR) - 1),
                month.getActualMaximum(Calendar.MONTH), 1);
    } else {
        month.set(Calendar.MONTH,
                month.get(Calendar.MONTH) - 1);
    }

}

protected void showToast(String string) {
    Toast.makeText(this, string, Toast.LENGTH_SHORT).show();

}

public void refreshCalendar() {
    TextView title = (TextView) findViewById(R.id.title);

    adapter.refreshDays();
    adapter.notifyDataSetChanged();
    handler.post(calendarUpdater); // generate some calendar items

    title.setText(android.text.format.DateFormat.format("MMMM yyyy", month));
}

public Runnable calendarUpdater = new Runnable() {

    @Override
    public void run() {
        items.clear();

        // Print dates of the current week
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
        String itemvalue;
        event = Utility.readCalendarEvent(CalendarView.this);
        Log.d("=====Event====", event.toString());
        Log.d("=====Date ARRAY====", Utility.startDates.toString());

        for (int i = 0; i < Utility.startDates.size(); i++) {
            itemvalue = df.format(itemmonth.getTime());
            itemmonth.add(Calendar.DATE, 1);
            items.add(Utility.startDates.get(i).toString());
        }
        adapter.setItems(items);
        adapter.notifyDataSetChanged();
    }
};

} 上面是我的ClendarView主要的Activity类。 我想在这个特定日期设置一些文本,但是无法看到文本,尽管上面的编程代码没有错误。我在android中是全新的。请帮助我。我的主要要求是在特定日期显示一些文本。我从XML Parsing获得的测试和日期。有没有其他方法可以在特定日期设置一些文本?请帮助我

0 个答案:

没有答案