2013-10-24 2 views
2

Я новичок, и я хочу, чтобы добавить элементы в моем Предопределенном массивеДобавить новый элемент в Listview динамически

public class MainActivity extends ListActivity { 
     //LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS 
     ; 
     String listItem[]={"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE"}; 


     ArrayAdapter<String> adapter; 
     EditText et; 

     @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, 
      listItem); 
     setListAdapter(adapter); 
     et=(EditText) findViewById(R.id.editText); 
    } 


    public void addItems(View v) { 
     String data=et.getText().toString(); 
     listItem.add(""+data); 
     adapter.notifyDataSetChanged(); 
    } 
} 
+1

В чем вопрос, в точности? – Josh

+0

Я хочу добавить элемент в свой массив listItem, который отображается в моем списке через edittext и кнопку – Illusionist

+0

Это все еще не проблема, а вопрос. После быстрого взгляда, я предполагаю, что 'listItem.add (" "+ data)' дает ошибку компиляции? Массивы не имеют метода 'add()'. Либо используйте «Список », либо добавьте непосредственно к адаптеру. При выполнении последнего вы можете удалить явный вызов 'notifyDataSetChanged()', поскольку вызов 'add()' сделает это для вас. –

ответ

4

Иллюзиониста, я чувствовал боль, как новичок, и боролся с этими упражнениями самостоятельно. Вышеупомянутые рекомендации MH относительно использования списка и добавления прямо к адаптеру являются правильными. Я включил измененную версию упражнения, но в основном делает то, что вы хотите. Я добавил несколько кнопок, один для добавления нового элемента в список и один для выхода из приложения. Оба имеют «onClick», добавленные в файл макета xml для основного действия.

Смотрите, если вы можете следить за то, что я сделал, и дайте мне знать, если у вас есть какие-либо вопросы или проблемы ...

import java.util.ArrayList; 
import java.util.List; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 

public class MainActivity extends ListActivity { 
EditText et; 
String listItem[]={"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE"}; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    et = (EditText) findViewById(R.id.editText); 

    List values = new ArrayList(); 
    for (int i = 0; i < listItem.length; i++) { 
     values.add(listItem[i]); 
    } 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, values); 
    setListAdapter(adapter); 
} 

public void onClick(View view) { 
    ArrayAdapter<String> adapter = (ArrayAdapter<String>) getListAdapter(); 
    String device; 
    switch (view.getId()) { 
    case R.id.addItem: 
     List myList = new ArrayList(); 
     device = et.getText().toString(); 
     myList.add(device); 
     adapter.add(device); 
     et.setText(""); 
     break; 
    case R.id.exit: 
     finish(); 
     break; 
    } 
    adapter.notifyDataSetChanged(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

Связанный файл разметки XML выглядит ...

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <Button 
     android:id="@+id/addItem" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Add Item" 
     android:onClick="onClick"/> 
    <Button 
     android:id="@+id/exit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Bye Bye" 
     android:onClick="onClick"/> 
</LinearLayout> 
    <EditText 
     android:id="@+id/editText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:hint="Text Goes Here"/> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 
</ListView> 

</LinearLayout> 

Примечание: будьте осторожны с идентификатором ListView; это должно быть так, как вы видите это при использовании ListActivity ... http://www.vogella.com/articles/AndroidListView/article.html

+0

Эй привет, пожалуйста, я знаю, как динамически добавлять подпункты в listview. Я не мог найти четкое руководство, но объяснение в виде списка понятно. –

Смежные вопросы