The following code provides a redefined itemize environment.
Update
An answer that suits your request a little better …
\items are labelable if you use the option "Lableable Items" (\item[<opt>]\label{<key>}).
Code
\documentclass{article}
\usepackage{xspace} % used in the \numItemsNextList command: http://ctan.org/pkg/xparse
\newcounter{myItemCounter} % counts items in the itemize list
\newcounter{myInternalLabelCounter} % increments so that every itemize environment gets it own label
\let\olditem\item % save original commands: \item
\let\olditemize\itemize % \begin{itemize}
\let\oldenditemize\enditemize % \end{itemize}
\newif\ifcountitems % \numItemsNextList set countitems true, otherwise no counting occurs
\newcommand*\numItemsNextList{%
\countitemstrue% initial: set countitems=true
\setcounter{myItemCounter}{0}% initial: myItemCounter=0
\stepcounter{myInternalLabelCounter}% initial: myInternalLabelCounter++
\ref{myInternalLabelKey\arabic{myInternalLabelCounter}}% needs 2nd run
\xspace% provides space without the need to use \numItemsNextList{}
}
\renewenvironment{itemize}{%
\olditemize%
}{%
\ifcountitems% only set label if we count at all
% \addtocounter{myItemCounter}{-1}% Without "Labelable Items": comment out if you have labelable items
% \refstepcounter{myItemCounter}% Without "Labelable Items": comment out if you have labelable items
\label{myInternalLabelKey\arabic{myInternalLabelCounter}}%
\fi%
\oldenditemize%
\global\countitemsfalse% sets countitems=false (end of itemize environment)
}
\renewcommand*\item{%
\ifcountitems%
% \stepcounter{myItemCounter}% Without "Labelable Items": If you use this comment out next line!
\refstepcounter{myItemCounter} % With "Labelable Items": If you use this comment out the line above!
\fi%
\olditem%
}
\begin{document}
There are \numItemsNextList ways how a parameter can be given:
\begin{itemize}
\item By a constant expression.
\item By user interaction.
\item From another database.
\end{itemize}
Without I:
\begin{itemize}
\item Not countable.
\end{itemize}
There are \numItemsNextList ways how a parameter can be given (\#\ref{lstitm:important} is a good one.):
\begin{itemize}
\item By a constant expression.
\item By user interaction.
\item\label{lstitm:important} From another database.
\item (Not really.)
\end{itemize}
Without II:
\begin{itemize}
\item Not countable.
\item Not countable.
\end{itemize}
\end{document}
Output

Old Solution
This solution can refer to any itemize environment with the optional argument.
Code
\documentclass{article}
\newcounter{myItemCounter}
\let\olditem\item
\let\olditemize\itemize
\let\oldenditemize\enditemize
\makeatletter
\newcommand*\@empty@string{}
\newcommand*\count@label{}
\renewcommand*\item{\refstepcounter{myItemCounter}\olditem}
\renewenvironment{itemize}[1][]{%
\setcounter{myItemCounter}{0}%
\renewcommand*\count@label{#1}%
\olditemize%
}{%
\ifx\count@label\@empty@string\else%
\label{\count@label}%
\fi%
\oldenditemize%
}
\newcommand*{\labelitem}[1]{%
\refstepcounter{myItemCounter}\label{#1}%
\olditem%
}
\makeatother
\begin{document}
This list contains \ref{lst:ct} item(s), the \ref{lst:important}. is important:
\begin{itemize}
\item[a] First item.
\labelitem{lst:important}[x] Next item.
\labelitem{lst:ct} Last item?
\end{itemize}
This list contains \ref{lst:ct2} item(s):
\begin{itemize}[lst:ct2]
\item First item.
\item[i] Last item?
\end{itemize}
\end{document}
Output

enumerateitems align at left margin? – Werner Sep 29 '12 at 15:54