Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Android Java: Angepasste ListView mit eigenem Adapter
 
Wenn man Daten in einer Android App in einer mehrzeiligen Datenliste anzeigen möchte,
dann muss man die Daten strukturieren in einer einfach Klasse und die Daten über einen eigenen Adapter der Listview zuweisen.

 
Daten-Klasse:
Wenn man in einer ListView nicht nur eine Zeile mit einem Text anzeigen möchte, dann muss man schon für den Inhalt der Liste eine kleines Daten-Klasse erzeugen
Also anstatt einen einfach String verwendet man hier eine Klasse mit einzelnen Member Variablen.

public class clsContacts{
//----------------< clsContacts() >----------------
public String contact_Name="";
public String contact_TelefonNr="";
//----------------</ clsContacts() >----------------
}

 
 
Anzeige Vorlage einstellen:
Die Anzeige der einzelnen Zeilen wird in einer eigenen xml Resourcen-Datei definiert.
Hierzu muss man unter dem Verzeichnis /layout eine eigene Datei mit mehren TextViews erstellen

 
Xml-Resource Datei:
In der xml Code-Ansicht hat man eine Relatives Layout und im Innern zwei TextView Elemente, welche die einzelnen Inhalte gestaltet anzeigen sollen.
Jede TextView benötigt einen id-Eintrag, damit die Resource im Java-Code wiedergefunden werden kann.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="layout.Login"
android:id="@+id/fragment_Login"
>
<
TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Name"

android:textSize="22dp"
android:id="@+id/textview_Contact_Name">
</
TextView>

<
TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="TelefonNr"
android:id="@+id/textview_Contact_TelefonNr"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="29dp"
android:layout_marginStart="29dp"
android:layout_marginTop="31dp"/>

</
RelativeLayout>
 

 
 
Java-Code zum Laden:
 
Zum Laden der ListView erstellt man zunächst eine Liste mit Daten, die man anzeigen möchte.
Hierzu erstellt man eine ArrayList aus Daten-Elementen, hier vom Typ clsContacts.

ArrayList<clsContacts> arrayList_Contacts = new ArrayList<clsContacts>();

 
Dann füllt man diese Liste mit einzelnen Elementen

clsContacts contact=new clsContacts();
contact.
contact_Name=cell.text();
contact.
contact_TelefonNr=cell.text();
arrayList_Contacts.add(contact);

 
Zum Abschluss gibt man die Daten an einen eignenen Adapter, der die Daten in die ListView überträgt

//< show results >
Adapter_for_Contacts adapter=new Adapter_for_Contacts(this,arrayList_Contacts);
listView_Contacts.setAdapter(adapter);
//</ show results >

 
 
Kompletter Lade-Code in Java:

private void fp_Contacts_Response(String sHTML) {
//----------------< fp_Contacts_Response() >----------------
..

ArrayList<clsContacts> arrayList_Contacts = new ArrayList<clsContacts>();

//--< @Loop: Cells >--
..
clsContacts contact=new clsContacts();
contact.
contact_Name=cell.text();
contact.
contact_TelefonNr=cell.text();
arrayList_Contacts.add(contact);
..

//--</ @Loop: Cells >--


//< show results >
Adapter_for_Contacts adapter=new Adapter_for_Contacts(this,arrayList_Contacts);
listView_Contacts.setAdapter(adapter);
//</ show results >
//----------------</ fp_Contacts_Response() >----------------

 

 
 
Adapter zum Laden in die ListView
 
Der Adapter zur Anzeige in der ListView muss manuell erstellt werden.
Hierzu erstellt man einen angepassten Adapter auf Basis einen BaseAdapters

public class Adapter_for_Contacts extends BaseAdapter {..}


 
Dieser Adapter enthält die inneren Variablen Context und eine Liste mit Anzeigedaten

//< Variables >
Context mContext;
List<clsContacts>
mContacts;
//</ Variables >

 
Damit dieser gleich mit den richtigen Parametern erstellt wird, wird diesem ein Konstruktur erstellt (Strg-N)

//< constructor with ListArray >
public Adapter_for_Contacts(Context mContext, List<clsContacts> mContact) {
this.mContext = mContext;
this.mContacts = mContact;
}
//</ constructor with ListArray >

 
Anzeige Methode der Elemente
Die eigentliche Übergabe findet in der internen Methode getView(..) statt.
Man holt erst eine Zeile aus der Resourcen Datei mit der man die Listview anzeigen möchte und zusätzlich die einzelnen Text-elemente

View view=View.inflate(mContext,R.layout.contact_items,null);
//< get controls >
TextView textview_contact_Name= (TextView) view.findViewById(R.id.textview_Contact_Name);
TextView textview_contact_TelefonNr= (TextView) view.findViewById(R.id.
textview_Contact_TelefonNr);
//</ get controls >

 
Anzeigen
Und dann weist man jede Zeile nach der aktuellen Position dem Anzeigelementen zu

//< show values >
textview_contact_Name.setText(mContacts.get(position).contact_Name);
textview_contact_TelefonNr.setText(
mContacts.get(position).contact_TelefonNr);
//</ show values >

 
 
Kompletter Code der getView-Methode

//----< show items >----
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=View.inflate(
mContext,R.layout.contact_items,null);
//< get controls >
TextView textview_contact_Name= (TextView) view.findViewById(R.id.textview_Contact_Name);
TextView textview_contact_TelefonNr= (TextView) view.findViewById(R.id.
textview_Contact_TelefonNr);
//</ get controls >

//< show values >
textview_contact_Name.setText(mContacts.get(position).contact_Name);
textview_contact_TelefonNr.setText(
mContacts.get(position).contact_TelefonNr);
//</ show values >


view.setTag(mContacts.get(position).contact_Name);
return view;
}
//----</ show items >----


 
 
 
 
Kompletter Java-Code für den Anzeige-Adapter

public class Adapter_for_Contacts extends BaseAdapter {
//----------------< Adapter_for_Contacts() >----------------
//< Variables >
Context mContext;
List<clsContacts>
mContacts;
//</ Variables >

//< constructor with ListArray >
public Adapter_for_Contacts(Context mContext, List<clsContacts> mContact) {
this.mContext = mContext;
this.mContacts = mContact;
}
//</ constructor with ListArray >

@Override
public int getCount() {
return mContacts.size();
}

@Override
public Object getItem(int position) {
return mContacts.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

//----< show items >----
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=View.inflate(
mContext,R.layout.contact_items,null);
//< get controls >
TextView textview_contact_Name= (TextView) view.findViewById(R.id.textview_Contact_Name);
TextView textview_contact_TelefonNr= (TextView) view.findViewById(R.id.
textview_Contact_TelefonNr);
//</ get controls >

//< show values >
textview_contact_Name.setText(mContacts.get(position).contact_Name);
textview_contact_TelefonNr.setText(
mContacts.get(position).contact_TelefonNr);
//</ show values >


view.setTag(mContacts.get(position).contact_Name);
return view;
}
//----</ show items >----
//----------------</ Adapter_for_Contacts() >----------------
}
 

 
 
Kompletter Java Code zum Erstellen einer ListView mit angepasstem Adapter


public class clsContacts{
//----------------< clsContacts() >----------------
public String contact_Name="";
public String contact_TelefonNr="";
//----------------</ clsContacts() >----------------
}

//=============================< Functions: Fritzbox.Contacts >=============================
private void fp_Contacts_Response(String sHTML) {
//----------------< fp_Contacts_Response() >----------------
//* Parse HTML Response
//http://fritz.box/fon_num/fonbook_list.lua
//< check >
if (sHTML=="") return;
//</ check >

txtResult_Contacts.setText( sURL_Contacts_base + "?sid=" + sSID);
txtResult_Contacts.setText(txtResult_Contacts.getText() + "\n" + "reading contacts..");


ArrayList<clsContacts> arrayList_Contacts =
new ArrayList<clsContacts>();
String sNodes =
"";

try
{
//< read hmtl to document >
Document doc = Jsoup.parse(sHTML);
//</ read hmtl to document >

//----< read innerTable >----
Element innerTable = doc.getElementById("uiInnerTable") ;
Elements rows=innerTable.select(
"tr");
//--< @Loop: Rows >--
for (Element row : rows) {
//--< @Loop: Cells >--
Elements cells=row.select("td");
clsContacts contact=
new clsContacts();
String sContact=
"";
for (Element cell : cells) {
//< cell >
if (cell.className().equals("tname") )
{
sNodes +=
"\n" + cell.text();
sContact=cell.text();
contact.
contact_Name=cell.text();
}
else if (cell.className().equals("tnum") )
{
sNodes +=
" " + cell.text();
sContact +=
" \t" + cell.text();
contact.
contact_TelefonNr=cell.text();

arrayList_Contacts.add(contact);
}
//</ cell >

}
//--</ @Loop: Cells >--
}
//--</ @Loop: Rows >--
//----</ read innerTable >----
}
catch (Exception e)
{
e.printStackTrace();
}

//< show results >
Adapter_for_Contacts adapter=new Adapter_for_Contacts(this,arrayList_Contacts);
listView_Contacts.setAdapter(adapter);
//</ show results >



//----------------</ fp_Contacts_Response() >----------------
}

public class Adapter_for_Contacts extends BaseAdapter {
//----------------< Adapter_for_Contacts() >----------------
//< Variables >
Context mContext;
List<clsContacts>
mContacts;
//</ Variables >

//< contstructor with ListArray >
public Adapter_for_Contacts(Context mContext, List<clsContacts> mContact) {
this.mContext = mContext;
this.mContacts = mContact;
}
//</ contstructor with ListArray >

@Override
public int getCount() {
return mContacts.size();
}

@Override
public Object getItem(int position) {
return mContacts.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

//----< show items >----
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=View.inflate(
mContext,R.layout.contact_items,null);
//< get controls >
TextView textview_contact_Name= (TextView) view.findViewById(R.id.textview_Contact_Name);
TextView textview_contact_TelefonNr= (TextView) view.findViewById(R.id.
textview_Contact_TelefonNr);
//</ get controls >

//< show values >
textview_contact_Name.setText(mContacts.get(position).contact_Name);
textview_contact_TelefonNr.setText(
mContacts.get(position).contact_TelefonNr);
//</ show values >


view.setTag(mContacts.get(position).contact_Name);
return view;
}
//----</ show items >----
//----------------</ Adapter_for_Contacts() >----------------
}
 

 
Mobile
»
App Settings als App Preferences speichern und lesen
»
Android Settings zu einem App Project zufügen
»
Android Code: Kontakte anfügen mit Person, Email, Telefon mit Batch Operationen
»
Android Studio: Kontakt anfügen mit Hilfe von Android Intent
»
Android Code: Automatisch eine Telefon-Nummer wählen
»
Android App Code: Start Stop von Wlan mit Java Code
»
Android App Code: App soll Wifi anschalten, Intent
»
Android: StartActivity und Intent wie Makros für Apps
»
Android Code: Android Kontakte lesen und in eine ListView speichern
»
Android Java: Angepasste ListView mit eigenem Adapter

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de