Adapter class displaying characters' info I have finished creating an adapter class which displays characters' info.
When I looked back and reviewed my own code, I think the code fragment below somehow could be broken into smaller methods.

...
private static class ViewHolder {
    ImageView imgIconState;
    ImageView imgCharacterStatus;
    TextView txtName;
}

@Override
public View getView(int index, View view, ViewGroup viewGroup) {
    ViewHolder characterProfile;
    if (view == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.character_item, null);
        characterProfile = new ViewHolder();
        characterProfile.imgIconState = (ImageView) view.findViewById(R.id.icon_state);
        characterProfile.imgCharacterStatus = (ImageView) view.findViewById(R.id.character_state);
        characterProfile.txtName = (TextView) view.findViewById(R.id.name);
        view.setTag(characterProfile);
    } else {
        characterProfile = (ViewHolder) view.getTag();
    }

    Character character =  mLeBluetoothLightsList.get(index);
    characterProfile.imgIconState.setImageResource(mIconStateRrs[character.getIconStatus()]);
    characterProfile.imgCharacterStatus.setImageResource(character.isAlive() ? R.drawable.alive : R.drawable.dead);
    characterProfile.txtName.setText(character.getCharacterName());

    if (Config.IS_DEBUG) {
        Log.i(mClassName, "getView - Index: " + index
                + "| Icon status: " + character.getIconStatusForLog()
                + "| Character status: " + character.isAliveForLog()
                + "| Name: " + character.getCharacterName());
    }

    return view;
}
...


I am attempting to write a 3 to 10 lines function, but I find it hard to break it smaller.

Should I refactor this or leave it as it is? If the answer is the former, please give me some advice.
I think this method is not that long that you really need to refactor it, but you could do something like

public View getView(int index, View view, ViewGroup viewGroup) {
    view = createViewIfNeeded(view)        
    final ViewHolder characterProfile = (ViewHolder) view.getTag();
    Character character =  mLeBluetoothLightsList.get(index);
    characterProfile.imgIconState.setImageResource(mIconStateRrs[character.getIconStatus()]);
    characterProfile.imgCharacterStatus.setImageResource(character.isAlive() ? R.drawable.alive : R.drawable.dead);
    characterProfile.txtName.setText(character.getCharacterName());
    logIfDebug(index, character);
    return view;
}

private static void logIfDebug(int index, Character character){
    if (Config.IS_DEBUG) {
        Log.i(mClassName, "getView - Index: " + index
                + "| Icon status: " + character.getIconStatusForLog()
                + "| Character status: " + character.isAliveForLog()
                + "| Name: " + character.getCharacterName());
    }
}

// You could extract createAndInitCharacterProfile from this method if you want
private View createViewIfNeeded(View view){
    if (view == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.character_item, null);
        ViewHolder characterProfile = new ViewHolder();
        characterProfile.imgIconState = (ImageView) view.findViewById(R.id.icon_state);
        characterProfile.imgCharacterStatus = (ImageView) view.findViewById(R.id.character_state);
        characterProfile.txtName = (TextView) view.findViewById(R.id.name);
        view.setTag(characterProfile);
   }
   return view;
}