Android Wing av mucchin | related ListView



Hur du anpassar ListView


Hur du anpassar ListView?

I Android, finns det en uppfattning att ListView.
Detta ListView är en vy som listar utformningen av samma konfiguration.
Det enklaste sättet att använda, eller jag skulle lista att du placerar bara en enkel Textview.
Men, hur man använder en så enkel vad, vad praktiskt?
Helt enkelt lista produktnamnet och användarnamn kan inte vara något till exempel.
Eller en knapp för att skicka röst-eller är en knapp för övergång till skärmen som visar produktens namn, detaljerad information som till användaren som användarnamn, inte bara text du vill ställa in med knappen, Jag tror att eller hur, och andra anpassningar som du vill, och om det finns en hel del.
Använda ListView är lite förvirrande, jag ska visa dig hur du använder mitt eget bästa.
I preliminärt, och på detta sätt, om det inte är riktigt allmänt bruk.


Först skapar du layouten på raden i ListView.
Hur man gör layouten är exakt samma som när du gör layouten på skärmen.
Steg på trappan för att lägga till XML, som fortsätter att lägga View.
Eftersom denna metod har införts tidigare, se nedan.
Hur man lägger till Android XML
Hur du ställer in XML layouten i Eclipse
I detta fall, låt oss till följande uppställning som prov.
Placera en knapp och Textview är knapp ska visas längst till höger.
Jag tror att båda sätt är annorlunda, är något som i följande exempel.


<? Xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout
xmlns: Android = "http://schemas.android.com/apk/res/android"
android: layout_height = "wrap_content" Android: layout_width = "fill_parent">
<Textview android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
android: id = "@ + id / nameText">
</ Textview>
<Knapp android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
android: layout_alignParentRight = "true"
android: id = "@ + ID / detailButton"
android: text = "@ string / detaljer">
</ Knapp>
</ RelativeLayout>


Den här gången för att möta kraven "knappen ska visas längst till höger" att utformningen av den förälder använder RelativeLayout.
Genom attribut till true layout_width i RelativeLayout, hela bredden av skärmen och föräldern, bredden på linjen själv i ListView.
Och det är att till sann layout_alignParentRight om Button, att för att placeras i längst till höger på RelativeLayout.
Detta tema, så att anpassa ListView, endast en visas ovan är ett exempel.
I samband med din favorit, du gör en layout.


Följande är skapandet av ListView att visa huvudskärmen.
Först ska vi skapa en skärmlayout.
Den här gången, låt oss bara säga enkelt och Textview för att visa sidhuvudet längst upp, och under den för att visa ListView.
Huvudet, eller kommer att använda för att visa titel, eller antalet List, den här gången Du behöver bara visa en enkel fast karaktär.
Aktivitet för att använda ListView för att visa skärmen i stället för normala verksamhet, kommer du att ärva ListActivity. Även om det är absolut nödvändigt, kan du fördelaktigt att ärva ListActivity.
Även om det senare, göra en layout som följande XML ändå.


<? Xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns: Android = "http://schemas.android.com/apk/res/android"
android: Orientering = "vertikal"
android: layout_width = "fill_parent"
android: layout_height = "fill_parent"
>
<Textview
android: layout_width = "fill_parent"
android: layout_height = "wrap_content"
android: text = "@ string / hello"
/>
<ListView android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
android: id = "@ + ID / android: förteckning">
</ ListView>
<Textview android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
android: id = "@ + ID / android: tom"
android: text = "@ string / nodata">
</ Textview>
</ LinearLayout>


I LinearLayout har utplacerade Textview, ListView den Textview.
Den första Textview är ett Textview för att visa namnet på bara en enkel applikation.
ListView är Textview den andra och tredje, jag vill att ni noterar en punkt, android: är värdet för attributet id.
Du är tomma: @ + ID / android: listan @ + ID / android.
Textview och säger något och den sista, är detta den formuleringen lista visas i data, även om det inte finns någon 1 i första hand.
att tillskriva text, även om det är @ string / nodata, detta är en sträng till string.xml, som du definierar själv.
Till exempel du har ställt in formuleringen som ". Har inte 1."
På detta sätt var aktiviteten att ärva ListActivity är, du automatiskt går till mig följande behandling.


@ + Id / android: om ListView som anges i listan inte visa något, @ + ID / android istället: att visa på Visa som anges i den tomma.


Det är en av de ovan nämnda punkt, snarare än en normal aktivitet, som är att ärva ListActivity lämpligen.
Definition av utformningen av skärmen är så här långt.


Därefter kommer du att tillhandahålla en klass bestående av boxen och sätta information, inklusive en sträng för att ställa in ListView.
Vet du något som kallas JavaBean.
Vet du att jag tror att det var att studera Servlet och JSP om det finns fler.
JavaBean är och jag har några regler strikt, · · ·
Jag satte en liten go i riktning mot en annan historia. Jag är ledsen.
Tänk att bara en enkel klass, en för privata variabler, och det är en metod för getter setter och en offentlig.
Här är det tillräckligt.
Som ett exempel, denna gång är ListView betraktas som en funktion som distribueras produktnamn och knappgylf, till den URL för denna produkt.
Information som krävs är produktnamnet och URL.
Ni har båda gjort klassen som en String typ, bara för att normgivare för varje variabel och produktens namn och URL kommer att lagras, getter metoden.
Är det något som den följande som ett exempel.


allmän klass ItemBean {
private String name = "";
private String url = "";
public void setName (String namn) {
this.name = namn;
}
public String getName () {
tillbaka namn;
}
public void setUrl (String url) {
this.url = url;
}
public String getURL () {
tillbaka url;
}
}


Kommer att fortsätta att generera data för en som ska visas på en av ListView, en instans av denna klass.
Jag postat i provet koden så att senare, och vet ni vid den tidpunkten.




Följande är genomförande av aktiviteten.
Först att ärva ListActivity.
ListActivity är en underklass av aktivitet, såsom oncreate är normalt tillsammans med aktiviteten.
I denna aktivitet är att skapa och visa av data som skall visas i ListView.

Att ListView är en metod som setListAdapter (), kommer data att visas genom att förekomsten av adaptern i ett argument.
Detta är också de fördelar som detta att ärva ListActivity.
Adaptern är ett exempel på de uppgifter som ska visas en efter en i listan.
Adapter att hantera mer än en, det finns en klass som kallas ArrayAdater, eftersom den här gången, för att visa ListView att anpassa, kommer du att ArrayAdapter ärver denna klass för att skapa din egen adapter klass.
Vänligen genomföra Aktiviteten, följande klasser. (Du kan naturligtvis också som en separat java fil.)


klass ListAdapter extends ArrayAdapter <ItemBean> {
privata LayoutInflater mInflater;
privata Textview mTitle;
privata knapp mButton;

offentliga ListAdapter (Context sammanhang, Lista <ItemBean> objekt) {
super (kontext, 0, föremål);
mInflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
}

offentliga Visa getView (slutlig int position, Visa convertView, ViewGroup förälder) {
if (convertView == null) {
convertView = mInflater.inflate (R.layout.row, null);
}
sista ItemBean item = this.getItem (position);
if (item! = null) {
mTitle = (Textview) convertView.findViewById (R.id.nameText);
mTitle.setText (item.getName ());
mButton = (knapp) convertView.findViewById (R.id.detailButton);
mButton.setOnClickListener (ny OnClickListener () {
public void onClick (Se volym) {
Uri uri = Uri.parse (item.getUrl ());
Intent i = new Intent (Intent.ACTION_VIEW, Uri);
startActivity (i);
}
});
}
återgå convertView;
}

}


Klass som ärvs, och är ArrayAdapter <ItemBean>.
(Och inte s ArrayAdapter skulle jag säga att även BaseAdapter, och det BaseAdapter, så de har stött på och? Bug inte kan lösas, jag använder det sedan ArrayAdapter.)
Side att dra fördel av denna klass, Aktivitet, efter att generera en ArrayList vars element är gjorda av sig själv ItemBean tidigare kan du använda för att generera adaptern som skickas till konstruktorn i denna klass.
getView metoden kommer att kallas till en data rad för rad i de metoder som kommer att anropas från VM, som ska visas.
Av följande delar:
sista ItemBean item = this.getItem (position);
I den här, så att du kan ta en instans av ItemBean samband med den linje med denna metod kallas, då ange den behandling som du vill.
I detta exempel när Textview är inställd på namnet, är knappen intryckt, du ställer till det faktum att du vill ansluta med webbläsaren till URL förknippas med.
I detta skede jag kanske inte fortfarande lite osäker.
Därefter, låt oss ta en titt på en process som kallas, som skall fastställas för att generera denna adapter faktiskt.


Den här gången namnet kallade låt oss app, övergång till sidan av sin sökmotor genom att trycka på knappen och namnet på sökmotorn.
allt du behöver göra är följande () oncreate.


public void oncreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.main);

ItemBean Yahoo = new ItemBean ();
yahoo.setName ("Yahoo");
yahoo.setUrl ("http://www.yahoo.co.jp");

ItemBean google = ny ItemBean ();
google.setName ("Google");
google.setUrl ("http://www.google.co.jp");

Lista <ItemBean> lista = new ArrayList <ItemBean> ();
list.add (Yahoo);
list.add (google);

ListAdapter adapter = new ListAdapter (getApplicationContext (), lista);
setListAdapter (adapter);
}


Detta är fast skriftligt, vilket gör ItemBean instans av Google och Yahoo, sedan lägga till den till en instans av listan <ItemBean>, för att skapa din egen ListAdapter Adapter använder killen då, setListAdapter () till denna Jag passerar.
Detta slutför.
Följande skärm visas.


Hur du anpassar ListView


Detta prov kod kan laddas ner från nedan.
Hur du anpassar ListView provkoden
När du förstår de metoder som presenteras här, för att skapa en layout resten som du gillar kan du skapa din egen adapter enligt det, bara () för att anpassa det, bör du kunna sannolikt att göra ännu ListView layout vad getView.
Etc. Om du vill använda Web Services API, där informationen kommer tillbaka tillsammans gå till att skapa en JavaBean klass för att analysera svaret och läggs till i ArrayList att skapa en instans av en data, känner jag mig som Om Shiteyare till, kan du använda metod som introducerades här var efter.
Fine, jag hoppas du kan tänka vad som kan vara lämpligt att använda en generisk Vad · · ·.