Das hatten wir doch schon mal. 
Also zuerst solltest Du bei dem String das erste Zeichen wegkürzen:
	
	
		str = str.substring(1, str.length());
	
	 
	
Dann den String splitten:
	
	
		String[] strArr = str.split("@");
	
	 
	
Dann machst Du ein zweites String[] mit nur den Namen drin:
	
	
		String[] nameArr = new String[strArr.length];
for(int i = 0; i < strArr.length; i++) {
   nameArr[i] = strArr[i].split("|")[1];
}
	
	 
	
Das Namen-Array packst Du dann in das ListView.
	
	
		liste.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nameArr));
	
	 
	
So. Und dann holst Du dir bei einem Klick auf ein Element der Liste dessen Position und lädst den Array-Eintrag:
	
	
		liste.setOnItemClickListener(new AdapterView.OnItemClickListener(){
	@Override
	public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
		String entry = strArr[position];
                Intent intent = new Intent(TestdroidActivity.this, Test2.class);
                intent.putExtra("eintrag", entry);
		startActivity(intent);
	}
});
	
	 
	
In der anderen Activity kannst Du dann den Eintrag holen mit:
	
	
		String entry = getIntent().getExtras().getString("eintrag");
	
	 
	
und diesen dann wieder an "|" splitten und entsprechend schön darstellen.
Ich hoffe das ist ausführlich genug!  