2016-07-31 4 views
1

Я пытаюсь обновить элементы listView, когда приложение запущено. Я могу заставить его работать, используя String [] вместо List, но моя цель - заставить его работать со списком, чтобы я мог добавить больше элементов в listView во время работы приложения.Как использовать Список <String> для значений ArrayAdapter (Java, Android)

private List<String> items; 

Я создал список для класса MainActivity.

ListView listView = (ListView)findViewById(R.id.listView); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, items); 
listView.setAdapter(adapter); 

Это не работает. Я пытался нервничать с items.ToArray(), но не нашел решения. Пробовал Google, но все результаты от Google перенаправляются только на обучающие программы, которые показывают, как сделать listView, и каждый из учебников был основан на массиве String [].

Приложение работает нормально, если я использую следующие:

private String[] items = {"Banana", "Lime"}; 

Я хочу, чтобы управлять вещи в режиме реального времени, когда пользователь добавляет их в список с помощью: «adapter.notifyDataSetChanged();»

Я начинаю на Java и особенно об Android. Развивая, так что помощь приветствуется.

+0

Предполагая, что вы инициализирован ArrayList, то ваш код должен работать. 'adapter.add (" hello ")' будет обновлять список без необходимости 'notifyDataSetChanged' –

ответ

0

У вас есть два подхода, чтобы сделать это:

  • Преобразовать ваш список Array (вы можете найти хороший пример here).
  • Создайте свой собственный адаптер и используйте List (еще один хороший пример here).

Первый подход:

List<String> stockList = new ArrayList<String>(); 
stockList.add("stock1"); 
stockList.add("stock2"); 

String[] stockArr = new String[stockList.size()]; 
stockArr = stockList.toArray(stockArr); 

for(String s : stockArr) 
    System.out.println(s); 

Второй подход:

public class CustomAdapter extends BaseAdapter{ 

    String [] result; 
    Context context; 
    int [] imageId; 
    private static LayoutInflater inflater=null; 

    public CustomAdapter(MainActivity mainActivity, String[] prgmNameList, int[] prgmImages) { 
     // TODO Auto-generated constructor stub 
     result=prgmNameList; 
     context=mainActivity; 
     imageId=prgmImages; 
     inflater = (LayoutInflater)context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
} 
+0

Черт. Не удалось найти такую ​​информацию через Google. Наверное, я так начинаю, поэтому я не знал достаточно хороших ключевых слов. Спасибо Амиру. –

+0

@WeirdE. Если ответы дают вам достаточно информации, вы можете их принять. – Amir

+0

Несомненно. Ждет его. Сайт требует 5 минут, прежде чем я смогу его принять. –

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

  • Нет связанных вопросов^_^