kzen.dev
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
 user555217
user555217
Question

Ako dynamicky pridávať prvky do listView v systéme Android

Môže niekto vysvetliť alebo navrhnúť návod na vytvorenie listView v systéme android?

Tu sú moje požiadavky:

  • Malo by byť možné dynamicky pridávať nové prvky stlačením tlačidla.
  • Mal by byť dostatočne jednoduchý na pochopenie (prípadne bez vylepšenia výkonu alebo napríklad convertview).

Viem, že na túto tému existuje dosť veľa otázok, ktoré sú zverejnené tu na StackOverflow, ale nenašiel som žiadnu, ktorá by odpovedala na moju otázku. Vďaka!

320 2010-12-27T18:10:33+00:00 3
Samet ÖZTOPRAK
Samet ÖZTOPRAK
Edited question 11 november 2019 в 9:38
Programovanie
listview
dynamic
android
This question has 1 odpoveď in English, to read them log in to your account.
 Shardul
Shardul
27 december 2010 в 6:25
2010-12-27T18:25:35+00:00
Viac na
Zdroj
Upraviť
#11577628

Najprv vytvorte rozloženie XML v priečinku res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <Button
        android:id="@+id/addBtn"
        android:text="Add New Item"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="addItems"/>
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false"
    />
</LinearLayout>

Toto je jednoduché rozloženie s tlačidlom v hornej časti a zobrazením zoznamu v dolnej časti. Všimnite si, že ListView má id @android:id/list, ktoré definuje predvolené ListView, ktoré môže používať ListActivity.

public class ListViewDemo extends ListActivity {
    //LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS
    ArrayList<String> listItems=new ArrayList<String>();

    //DEFINING A STRING ADAPTER WHICH WILL HANDLE THE DATA OF THE LISTVIEW
    ArrayAdapter<String> adapter;

    //RECORDING HOW MANY TIMES THE BUTTON HAS BEEN CLICKED
    int clickCounter=0;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        adapter=new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,
            listItems);
        setListAdapter(adapter);
    }

    //METHOD WHICH WILL HANDLE DYNAMIC INSERTION
    public void addItems(View v) {
        listItems.add("Clicked : "+clickCounter++);
        adapter.notifyDataSetChanged();
    }
}

android.R.layout.simple_list_item_1 je predvolené rozloženie položiek zoznamu dodávané systémom Android a toto skladové rozloženie môžete použiť pre nekomplexné veci.

listItems je zoznam, ktorý obsahuje údaje zobrazené v ListView. Všetko vkladanie a odstraňovanie by sa malo vykonávať v listItems; zmeny v listItems by sa mali prejaviť v zobrazení. O to sa stará adaptér `ArrayAdapter, ktorý by mal byť notifikovaný pomocou:

adapter.notifyDataSetChanged();

Adaptér sa inštanciuje s 3 parametrami: kontext, ktorým môže byť vaša aktivita/listactivity; rozloženie jednotlivých položiek zoznamu; a napokon zoznam, ktorým sú skutočné údaje, ktoré sa majú v zozname zobraziť.

 elimirks
elimirks
Edited answer 6 september 2013 в 8:06
580
0
Artificial intelligence to parse product page
productapi.dev
 venkat530
venkat530
22 máj 2014 в 3:55
2014-05-22T03:55:42+00:00
Viac na
Zdroj
Upraviť
#11577629

namiesto

listItems.add("New Item");
adapter.notifyDataSetChanged();

môžete priamo zavolať

adapter.add("New Item");
62
0
Artificial intelligence to parse product page
productapi.dev
 Robert
Robert
10 november 2014 в 9:40
2014-11-10T09:40:51+00:00
Viac na
Zdroj
Upraviť
#11577630

Najprv musíte do súboru activity_main.xml pridať ListView, EditText a tlačidlo.

Teraz v súbore ActivityMain:

private EditText editTxt;
private Button btn;
private ListView list;
private ArrayAdapter<String> adapter;
private ArrayList<String> arrayList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    editTxt = (EditText) findViewById(R.id.editText);
    btn = (Button) findViewById(R.id.button);
    list = (ListView) findViewById(R.id.listView);
    arrayList = new ArrayList<String>();

    // Adapter: You need three parameters 'the context, id of the layout (it will be where the data is shown),
    // and the array that contains the data
    adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, arrayList);

    // Here, you set the data in your ListView
    list.setAdapter(adapter);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            // this line adds the data of your EditText and puts in your array
            arrayList.add(editTxt.getText().toString());
            // next thing you have to do is check if your adapter has changed
            adapter.notifyDataSetChanged();
        }
    });
}

Toto mi funguje, dúfam, že som vám pomohol

Rob Rose
Rob Rose
Edited answer 24 júl 2015 в 3:24
54
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
Inessa bu
Registered pred mesiacom
2
Denis Babushkin
Registered pred mesiacom
3
asakuno asakuno
Registered pred mesiacom
4
aldo salerno
Registered pred mesiacom
5
Анна Батицкая
Registered pred mesiacom
Artificial intelligence to parse product page
productapi.dev
BG
DE
EL
ES
FR
ID
IT
JA
KO
LT
NL
NO
PT
RO
RU
SK
SL
TR
UK
ZH
© kzen.dev 2023
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora