private void handleJsonList(ViewHolder holder, int position) {
    ThreadPageInfo entry = getEntry(position);
    // this.topicListInfo.getArticleEntryList().get(position);

    if (entry == null) {
      return;
    }
    Resources res = inflater.getContext().getResources();
    ThemeManager theme = ThemeManager.getInstance();
    boolean night = false;
    int nightLinkColor = res.getColor(R.color.night_link_color);
    if (theme.getMode() == ThemeManager.MODE_NIGHT) night = true;
    holder.author.setText(entry.getAuthor());
    if (night) holder.author.setTextColor(nightLinkColor);

    String lastPoster = entry.getLastposter_org();
    if (StringUtil.isEmpty(lastPoster)) lastPoster = entry.getLastposter();
    holder.lastReply.setText(lastPoster);
    holder.num.setText("" + entry.getReplies());
    if (night) {
      holder.lastReply.setTextColor(nightLinkColor);
      holder.num.setTextColor(nightLinkColor);
    }

    holder.title.setTextColor(res.getColor(theme.getForegroundColor()));
    float size = PhoneConfiguration.getInstance().getTextSize();

    String titile = entry.getContent();
    if (StringUtil.isEmpty(titile)) {
      titile = entry.getSubject();
      holder.title.setText(StringUtil.unEscapeHtml(titile));

    } else {
      holder.title.setText(StringUtil.removeBrTag(StringUtil.unEscapeHtml(titile)));
    }

    holder.title.setTextSize(size);
    final TextPaint tp = holder.title.getPaint();
    tp.setFakeBoldText(false);

    if (!StringUtil.isEmpty(entry.getTitlefont())) {
      final String font = entry.getTitlefont();
      if (font.equals("~1~~") || font.equals("~~~1")) {
        tp.setFakeBoldText(true);
      } else if (font.startsWith("green")) {
        holder.title.setTextColor(res.getColor(R.color.title_green));
      } else if (font.startsWith("blue")) {
        holder.title.setTextColor(res.getColor(R.color.title_blue));
      } else if (font.startsWith("red")) {
        holder.title.setTextColor(res.getColor(R.color.title_red));
      } else if (font.startsWith("orange")) {
        holder.title.setTextColor(res.getColor(R.color.title_orange));
      }
    }
  }
 @Override
 public void finishLoad(ThreadData data) {
   int exactCount = 1 + data.getThreadInfo().getReplies() / 20;
   if (mTabsAdapter.getCount() != exactCount && this.authorid == 0) {
     if (this.pid != 0) exactCount = 1;
     mTabsAdapter.setCount(exactCount);
   }
   if (this.authorid > 0) {
     exactCount = 1 + data.get__ROWS() / 20;
     mTabsAdapter.setCount(exactCount);
   }
   if (tid != data.getThreadInfo().getTid()) // mirror thread
   tid = data.getThreadInfo().getTid();
   fid = data.getThreadInfo().getFid();
   setTitle(StringUtil.unEscapeHtml(data.getThreadInfo().getSubject()));
 }
  @Override
  public void finishLoad(ThreadData data) {
    /*int exactCount = 1 + data.getThreadInfo().getReplies()/20;
    if(father.getmTabsAdapter().getCount() != exactCount
    		&&this.authorid == 0){
    	father.getmTabsAdapter().setCount(exactCount);
    }
    father.setTitle(StringUtil.unEscapeHtml(data.getThreadInfo().getSubject()));
    */

    Fragment articleContainer =
        getSupportFragmentManager().findFragmentById(R.id.item_detail_container);

    OnThreadPageLoadFinishedListener listener = null;
    try {
      listener = (OnThreadPageLoadFinishedListener) articleContainer;
      if (listener != null) {
        listener.finishLoad(data);
        setTitle(StringUtil.unEscapeHtml(data.getThreadInfo().getSubject()));
      }
    } catch (ClassCastException e) {
      Log.e(TAG, "detailContainer should implements OnThreadPageLoadFinishedListener");
    }
  }
  @Override
  public boolean onContextItemSelected(MenuItem item) {

    Log.d(TAG, "onContextItemSelected,tid=" + tid + ",page=" + page);
    PagerOwnner father = null;
    try {
      father = (PagerOwnner) getActivity();
    } catch (ClassCastException e) {
      Log.e(TAG, "father activity does not implements interface " + PagerOwnner.class.getName());
      return true;
    }

    if (father == null) return false;

    if (father.getCurrentPage() != page) {
      return false;
    }

    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    int position = this.listview.getCheckedItemPosition();
    if (info != null) {
      position = info.position;
    }
    if (position < 0 || position >= listview.getAdapter().getCount()) {
      Toast.makeText(getActivity(), R.string.floor_error, Toast.LENGTH_LONG).show();
      position = 0;
    }
    StringBuffer postPrefix = new StringBuffer();
    String tidStr = String.valueOf(this.tid);

    ThreadRowInfo row = (ThreadRowInfo) listview.getItemAtPosition(position);
    if (row == null) {
      Toast.makeText(getActivity(), R.string.unknow_error, Toast.LENGTH_LONG).show();
      return true;
    }
    String content = row.getContent();
    final String name = row.getAuthor();
    String mention = null;
    Intent intent = new Intent();
    switch (item.getItemId())
    // if( REPLY_POST_ORDER ==item.getItemId())
    {
      case R.id.quote_subject:
        final String quote_regex = "\\[quote\\]([\\s\\S])*\\[/quote\\]";
        final String replay_regex =
            "\\[b\\]Reply to \\[pid=\\d+,\\d+,\\d+\\]Reply\\[/pid\\] Post by .+?\\[/b\\]";
        content = content.replaceAll(quote_regex, "");
        content = content.replaceAll(replay_regex, "");
        final String postTime = row.getPostdate();

        if (!content.trim().endsWith("[/url]")) {
          if (content.length() > 100) content = content.substring(0, 99) + ".......";
        }
        content = StringUtil.unEscapeHtml(content);

        if (row.getPid() != 0) {
          mention = name;
          postPrefix.append("[quote][pid=");
          postPrefix.append(row.getPid());
          postPrefix.append(',').append(tidStr).append(",").append(page);
          postPrefix.append("]"); // Topic
          postPrefix.append("Reply");
          postPrefix.append("[/pid] [b]Post by ");
          postPrefix.append(name);
          postPrefix.append(" (");
          postPrefix.append(postTime);
          postPrefix.append("):[/b]\n");
          postPrefix.append(content);
          postPrefix.append("[/quote]\n");
        }

        // case R.id.r:

        if (!StringUtil.isEmpty(mention)) intent.putExtra("mention", mention);
        intent.putExtra("prefix", StringUtil.removeBrTag(postPrefix.toString()));
        intent.putExtra("tid", tidStr);
        intent.putExtra("action", "reply");
        intent.setClass(getActivity(), PostActivity.class);
        startActivity(intent);
        if (PhoneConfiguration.getInstance().showAnimation)
          getActivity().overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
        break;
      case R.id.edit:
        if (isComment(row)) {
          Toast.makeText(getActivity(), R.string.cannot_eidt_comment, Toast.LENGTH_SHORT).show();
          break;
        }
        Intent intentModify = new Intent();
        intentModify.putExtra("prefix", StringUtil.unEscapeHtml(StringUtil.removeBrTag(content)));
        intentModify.putExtra("tid", tidStr);
        String pid = String.valueOf(row.getPid()); // getPid(map.get("url"));
        intentModify.putExtra("pid", pid);
        intentModify.putExtra("title", StringUtil.unEscapeHtml(row.getSubject()));
        intentModify.putExtra("action", "modify");
        intentModify.setClass(getActivity(), PostActivity.class);
        startActivity(intentModify);
        if (PhoneConfiguration.getInstance().showAnimation)
          getActivity().overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
        break;
      case R.id.copy_to_clipboard:
        // if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB )
        // {
        android.text.ClipboardManager cbm =
            (android.text.ClipboardManager)
                getActivity().getSystemService(Activity.CLIPBOARD_SERVICE);
        cbm.setText(StringUtil.removeBrTag(content));
        // }else{
        // android.content.ClipboardManager  cbm = (android.content.ClipboardManager)
        // getSystemService(CLIPBOARD_SERVICE);
        // cbm.setPrimaryClip(ClipData.newPlainText("content", content));
        // }

        Toast.makeText(getActivity(), R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show();
        break;
      case R.id.show_this_person_only:
        Intent intentThis = new Intent();
        intentThis.putExtra("tab", "1");
        intentThis.putExtra("tid", tid);
        intentThis.putExtra("authorid", row.getAuthorid());

        intentThis.setClass(getActivity(), PhoneConfiguration.getInstance().articleActivityClass);
        startActivity(intentThis);
        if (PhoneConfiguration.getInstance().showAnimation)
          getActivity().overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);

        // restNotifier.reset(0, row.getAuthorid());
        // ActivityUtil.getInstance().noticeSaying(getActivity());

        break;
      case R.id.show_whole_thread:
        ResetableArticle restNotifier = null;
        try {
          restNotifier = (ResetableArticle) getActivity();
        } catch (ClassCastException e) {
          Log.e(
              TAG,
              "father activity does not implements interface " + ResetableArticle.class.getName());
          return true;
        }
        restNotifier.reset(0, 0, row.getLou());
        ActivityUtil.getInstance().noticeSaying(getActivity());
        break;
      case R.id.post_comment:
        final String dialog_tag = "post comment";
        FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
        Fragment prev = getActivity().getSupportFragmentManager().findFragmentByTag(dialog_tag);
        if (prev != null) {
          ft.remove(prev);
        }
        DialogFragment df = new PostCommentDialogFragment();
        Bundle b = new Bundle();
        b.putInt("pid", row.getPid());
        b.putInt("tid", this.tid);
        df.setArguments(b);
        df.show(ft, dialog_tag);

        break;
      case R.id.report:
        handleReport(row);
        break;
      case R.id.search_post:
        intent.putExtra("searchpost", 1);
      case R.id.search_subject:
        intent.putExtra("authorid", row.getAuthorid());
        intent.setClass(getActivity(), PhoneConfiguration.getInstance().topicActivityClass);
        startActivity(intent);
        if (PhoneConfiguration.getInstance().showAnimation)
          getActivity().overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);

        break;
      case R.id.item_share:
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("text/plain");
        String shareUrl = "http://bbs.ngacn.cc/read.php?";
        if (row.getPid() != 0) {
          shareUrl = shareUrl + "pid=" + row.getPid();
        } else {
          shareUrl = shareUrl + "tid=" + tid;
        }
        intent.putExtra(Intent.EXTRA_TEXT, shareUrl);
        String text = getResources().getString(R.string.share);
        getActivity().startActivity(Intent.createChooser(intent, text));
        break;
    }
    return true;
  }