private View createViewFromResource(int position, View view, ViewGroup parent, int resource) { Context context = parent.getContext(); LogLineViewWrapper wrapper; if (view == null) { view = mInflater.inflate(resIdLogcatListItem, parent, false); wrapper = new LogLineViewWrapper(view); view.setTag(wrapper); } else { wrapper = (LogLineViewWrapper) view.getTag(); } TextView levelTextView = wrapper.getLevelTextView(); TextView outputTextView = wrapper.getOutputTextView(); TextView tagTextView = wrapper.getTagTextView(); TextView pidTextView = wrapper.getPidTextView(); TextView timestampTextView = wrapper.getTimestampTextView(); LogLine logLine; try { logLine = (LogLine) getItem(position); } catch (IndexOutOfBoundsException e) { // XXX hack - I sometimes get array index out of bounds exceptions // here // no idea how to solve it, so this is the best I can do // logLine = LogLine.newLogLine("", // PreferenceHelper.getExpandedByDefaultPreference(context)); logLine = LogLine.newLogLine("", false); } levelTextView.setText(Character.toString(LogLine.convertLogLevelToChar(logLine.getLogLevel()))); levelTextView.setBackgroundColor( LogLineAdapterUtil.getBackgroundColorForLogLevel(context, logLine.getLogLevel())); levelTextView.setTextColor( LogLineAdapterUtil.getForegroundColorForLogLevel(context, logLine.getLogLevel())); levelTextView.setVisibility(logLine.getLogLevel() == -1 ? View.GONE : View.VISIBLE); // empty tag indicates this is the line like "beginning of dev/log..." CharSequence output = (logLine.isExpanded() || TextUtils.isEmpty(logLine.getTag())) ? logLine.getLogOutput() : StringUtil.ellipsizeString(logLine.getLogOutput(), outputTextView); outputTextView.setSingleLine(!logLine.isExpanded()); outputTextView.setText(output); outputTextView.setTextColor(Color.WHITE); CharSequence tag = logLine.isExpanded() ? logLine.getTag() : StringUtil.ellipsizeString(logLine.getTag(), tagTextView); tagTextView.setSingleLine(!logLine.isExpanded()); tagTextView.setText(tag); tagTextView.setVisibility(logLine.getLogLevel() == -1 ? View.GONE : View.VISIBLE); tagTextView.setTextColor(Color.WHITE); // set the text size based on the preferences // float textSize = PreferenceHelper.getTextSizePreference(context); float textSize = 15; tagTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize); outputTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize); levelTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize); pidTextView.setText( logLine.getProcessId() != -1 ? Integer.toString(logLine.getProcessId()) : null); pidTextView.setTextColor(Color.WHITE); timestampTextView.setText("Time: " + logLine.getTimestamp()); timestampTextView.setTextColor(Color.WHITE); return view; }