2016-07-31 1 views
1

응용 프로그램이 실행 중일 때 listView 항목을 업데이트하려고합니다. List 대신 String []을 사용하여 작업을 수행 할 수 있지만 응용 프로그램이 실행되는 동안 listView에 항목을 추가 할 수 있도록 List로 작업하게하는 것이 목표입니다.ArrayAdapter 값 (Java, Android)에 List <String>을 사용하는 방법

private List<String> items; 

나는 List to 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 Developing에 대한 초보자이므로 도움을 주시면 감사하겠습니다.

+0

당신이 ArrayList를 초기화 가정, 다음 코드는 작동합니다. 'adapter.add ("hello")'는'notifyDataSetChanged'에 대한 필요없이 목록을 갱신합니다. –

답변

0

당신은이 작업을 수행하는 두 가지 방법이 있습니다

  • 가 배열에 목록 변환을 (당신은 좋은 예 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 분이 필요합니다. –

관련 문제