@Override public View getView(final int position, View convertView, ViewGroup parent) { ViewCache viewCache; if (convertView == null) { convertView = View.inflate(InformationActivity.this, R.layout.knowledge_information_item, null); viewCache = new ViewCache(convertView); convertView.setTag(viewCache); } else { viewCache = (ViewCache) convertView.getTag(); } final Knowledge bean = (Knowledge) getItem(position); LinearLayout linearLayout = viewCache.getLinearLayout(); LinearLayout linearPressed = viewCache.getLayoutPressed(); TextView today = viewCache.getToday(); TextView yuchanqi = viewCache.getYuchanqi(); TextView week = viewCache.getWeek(); TextView date = viewCache.getDate(); TextView everyDayTitle = viewCache.getEveryDayTitle(); TextView subTitle = viewCache.getSubTitle(); TextView content = viewCache.getContent(); ImageView image = viewCache.getContentImage(); CheckBox checkBox0 = viewCache.getCheckBox0(); TextView remind0 = viewCache.getRemind0(); CheckBox checkBox1 = viewCache.getCheckBox1(); TextView remind1 = viewCache.getRemind1(); CheckBox checkBox2 = viewCache.getCheckBox2(); TextView remind2 = viewCache.getRemind2(); ImageView line0 = viewCache.getLine0(); ImageView line1 = viewCache.getLine1(); ImageView line2 = viewCache.getLine2(); LinearLayout ll0 = viewCache.getLl0(); LinearLayout ll1 = viewCache.getLl1(); LinearLayout ll2 = viewCache.getLl2(); LinearLayout layout_know = viewCache.getLayoutKnow(); LinearLayout topicLL0 = viewCache.getTopicLL0(); LinearLayout topicLL1 = viewCache.getTopicLL1(); LinearLayout topicLL2 = viewCache.getTopicLL2(); TextView topicTV0 = viewCache.getTopicTV0(); TextView topicTV1 = viewCache.getTopicTV1(); TextView topicTV2 = viewCache.getTopicTV2(); ImageView topicLine0 = viewCache.getTopicLine0(); ImageView topicLine1 = viewCache.getTopicLine1(); ImageView topicLine2 = viewCache.getTopicLine2(); topicLine0.setVisibility(View.GONE); topicLine1.setVisibility(View.GONE); topicLine2.setVisibility(View.GONE); topicLL0.setVisibility(View.GONE); topicLL1.setVisibility(View.GONE); topicLL2.setVisibility(View.GONE); today.setVisibility(View.GONE); yuchanqi.setVisibility(View.GONE); image.setVisibility(View.GONE); line0.setVisibility(View.GONE); line1.setVisibility(View.GONE); line2.setVisibility(View.GONE); ll0.setVisibility(View.GONE); ll1.setVisibility(View.GONE); ll2.setVisibility(View.GONE); everyDayTitle.setVisibility(View.GONE); subTitle.setVisibility(View.GONE); // week final int has = hasDaysNum; if (position != 0) { week.setText( getWeek(getBeforeAfterDate(getPregnancyDay(has).toString(), (bean.days_number - 2)))); } else { week.setVisibility(View.GONE); } // date Calendar cal = new GregorianCalendar(); cal.setTime(getBeforeAfterDate(getPregnancyDay(has).toString(), (bean.days_number - 2))); if (position != 0) { date.setText((cal.get(Calendar.MONTH) + 1) + "月" + cal.get(Calendar.DAY_OF_MONTH) + "日"); } else { date.setVisibility(View.GONE); } // title ArrayList<Knowledge> list = bean.list; for (int i = 0; i < list.size(); i++) { if (list.get(i).category_id == 5) { continue; } final Knowledge knowledge = list.get(i); if (knowledge.type_id == CommConstants.TYPE_KNOW) { linearPressed.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // 知识 // Umeng Evert MobclickAgent.onEvent( getBaseContext(), EventContants.know, EventContants.know_item_click); Intent intent = null; if (position == 0) { intent = new Intent(InformationActivity.this, InformationForTitleActivity.class) .putExtra("type_name", "备孕") .putExtra("mStrings", mString); } else { intent = new Intent(getApplicationContext(), InformationDetailActivity.class); intent.putExtra(InformationDetailActivity.BUNDLE_ID, knowledge._id); intent.putExtra( InformationDetailActivity.BUNDLE_CATEGORY_ID, knowledge.category_id); intent.putExtra( InformationDetailActivity.BUNDLE_DAYS_NUMBER, knowledge.days_number); } startActivity(intent); } }); layout_know.setVisibility(View.VISIBLE); if (knowledge.category_id != 5) { if (knowledge.title != null && !knowledge.title.equals("")) { subTitle.setVisibility(View.VISIBLE); subTitle.setText(knowledge.title); } else { everyDayTitle.setVisibility(View.GONE); } if (knowledge.category_id != 0 && position != 0) { everyDayTitle.setVisibility(View.VISIBLE); everyDayTitle.setText( BabytreeTitleUtil.switchTitle( knowledge.category_id, BabytreeTitleUtil.TYPE_TITLE)); } else { everyDayTitle.setVisibility(View.GONE); } content.setText(knowledge.summary_content); // 图片 if (knowledge.summary_image != null && !knowledge.summary_image.equals("")) { image.setVisibility(View.VISIBLE); image.setTag(Md5Util.md5(knowledge.summary_image)); Bitmap mBitmap = mImageCacheLoaderForBitmap.loadDrawableForBitmap( "htmls/", knowledge.summary_image, InformationActivity.this, new ImageCallbackForBitmap() { public void imageLoadedForBitmap(Bitmap bp, String imageUrl) { try { ImageView tagImage = (ImageView) mListView.findViewWithTag(imageUrl); if (tagImage != null) { if (bp != null) { // tagImage.setImageDrawable(imageDrawable); tagImage.setImageBitmap(bp); } } } catch (OutOfMemoryError e) { // catch block e.printStackTrace(); bp.recycle(); } } }); if (mBitmap != null) { image.setImageBitmap(mBitmap); } } else { image.setVisibility(View.GONE); } } } else if (knowledge.type_id == CommConstants.TYPE_REMIND) { // remind if (ll0.getVisibility() == View.GONE && knowledge.is_important == 1) { ll0.setVisibility(View.VISIBLE); line0.setVisibility(View.VISIBLE); remind0.setText(knowledge.title); ll0.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // Umeng Evert MobclickAgent.onEvent( getBaseContext(), EventContants.know, EventContants.know_remind); Intent intent = new Intent(getApplicationContext(), RemindDetailActivity.class); intent.putExtra("_id", knowledge._id); intent.putExtra("title", knowledge.title); intent.putExtra("status", knowledge.status); intent.putExtra("days_number", knowledge.days_number); intent.putExtra("position", position); // intent.putExtra("identify", 0); startActivity(intent); } }); if (knowledge.status == 1) { checkBox0.setChecked(true); } else { checkBox0.setChecked(false); } checkBox0.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { CheckBox cb = (CheckBox) v; if (cb.isChecked()) { mController.updateKnowledge(knowledge._id, 1); knowledge.status = 1; } else { mController.updateKnowledge(knowledge._id, 0); knowledge.status = 0; } } }); } else if (ll1.getVisibility() == View.GONE && knowledge.is_important == 1) { ll1.setVisibility(View.VISIBLE); line1.setVisibility(View.VISIBLE); remind1.setText(knowledge.title); ll1.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // Umeng Evert MobclickAgent.onEvent( getBaseContext(), EventContants.know, EventContants.know_remind); Intent intent = new Intent(getApplicationContext(), RemindDetailActivity.class); intent.putExtra("_id", knowledge._id); intent.putExtra("title", knowledge.title); intent.putExtra("status", knowledge.status); intent.putExtra("identify", 0); intent.putExtra("days_number", knowledge.days_number); intent.putExtra("position", position); startActivity(intent); } }); if (knowledge.status == 1) { checkBox1.setChecked(true); } else { checkBox1.setChecked(false); } checkBox1.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { CheckBox cb = (CheckBox) v; if (cb.isChecked()) { mController.updateKnowledge(knowledge._id, 1); knowledge.status = 1; } else { mController.updateKnowledge(knowledge._id, 0); knowledge.status = 0; } } }); } else if (ll2.getVisibility() == View.GONE && knowledge.is_important == 1) { ll2.setVisibility(View.VISIBLE); line2.setVisibility(View.VISIBLE); remind2.setText(knowledge.title); ll2.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // Umeng Evert MobclickAgent.onEvent( getBaseContext(), EventContants.know, EventContants.know_remind); Intent intent = new Intent(getApplicationContext(), RemindDetailActivity.class); intent.putExtra("_id", knowledge._id); intent.putExtra("title", knowledge.title); intent.putExtra("status", knowledge.status); intent.putExtra("identify", 0); intent.putExtra("days_number", knowledge.days_number); intent.putExtra("position", position); startActivity(intent); } }); if (knowledge.status == 1) { checkBox2.setChecked(true); } else { checkBox2.setChecked(false); } checkBox2.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { CheckBox cb = (CheckBox) v; if (cb.isChecked()) { mController.updateKnowledge(knowledge._id, 1); knowledge.status = 1; } else { mController.updateKnowledge(knowledge._id, 0); knowledge.status = 0; } } }); } } else if (knowledge.type_id == CommConstants.TYPE_TOPIC) { // 讨论 if (topicLL0.getVisibility() == View.GONE) { topicLine0.setVisibility(View.VISIBLE); topicLL0.setVisibility(View.VISIBLE); topicTV0.setText(knowledge.title); topicLL0.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { startActivity( new Intent(InformationActivity.this, TagTopicListActivity.class) .putExtra("tag", knowledge.title)); } }); } else if (topicLL1.getVisibility() == View.GONE) { topicLine1.setVisibility(View.VISIBLE); topicLL1.setVisibility(View.VISIBLE); topicTV1.setText(knowledge.topics); topicLL1.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { startActivity( new Intent(InformationActivity.this, TagTopicListActivity.class) .putExtra("tag", knowledge.title)); } }); } else if (topicLL2.getVisibility() == View.GONE) { topicLine2.setVisibility(View.VISIBLE); topicLL2.setVisibility(View.VISIBLE); topicTV2.setText(knowledge.topics); topicLL2.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { startActivity( new Intent(InformationActivity.this, TagTopicListActivity.class) .putExtra("tag", knowledge.title)); } }); } } yuchanqi.setText("离预产期还有" + hasDaysNum + "天"); } int section = getSectionForPosition(position); boolean displaySectionHeaders = (getPositionForSection(section) == position); bindSectionHeader(convertView, position, displaySectionHeaders); if (selectedPosition == position && hasDaysNum >= 0) { linearLayout.setBackgroundResource(R.color.pink); today.setVisibility(View.VISIBLE); yuchanqi.setVisibility(View.VISIBLE); // selectedPosition = -1; if (!displaySectionHeaders) { LinearLayout layoutOther = viewCache.getLayoutOther(); layoutOther.setPadding(0, 30, 0, 0); } } else { linearLayout.setBackgroundResource(R.color.background); today.setVisibility(View.GONE); yuchanqi.setVisibility(View.GONE); } return convertView; }