ArrayList를 사용하여 ListView 채우기?


109

AndroidListViewArrayList.

이 작업을 수행하는 데 문제가 있습니다. 누군가 코드로 나를 도울 수 있습니까?

답변:


228

ArrayAdapterArrayList (또는 다른 컬렉션)를 레이아웃의 항목 (ListView, Spinner 등)에 맞게 조정 하는 을 통해 수행해야합니다 .

이것은 무엇 안드로이드 개발자 가이드는 말한다 :

ListAdapterA를 관리하는 ListView임의의 오브젝트의 배열에 근거. 기본적으로이 클래스는 제공된 리소스 ID가 단일 TextView. 더 복잡한 레이아웃을 사용하려면 필드 ID도받는 생성자를 사용하십시오. 해당 필드 ID는 TextView더 큰 레이아웃 리소스에서를 참조해야 합니다.

그러나 TextView는 참조되지만 toString()배열의 각 개체 로 채워집니다 . 사용자 지정 개체의 목록 또는 배열을 추가 할 수 있습니다. toString()목록의 항목에 대해 표시 할 텍스트를 결정하려면 개체 메서드를 재정의하십시오 .

TextViews예를 들어 배열 표시 이외의 것을 사용 ImageViews하거나 toString()결과 이외의 일부 데이터 가보기를 채우도록하려면 재정 의하여 getView(int, View, ViewGroup)원하는보기 유형을 반환합니다.

따라서 코드는 다음과 같아야합니다.

public class YourActivity extends Activity {

    private ListView lv;

    public void onCreate(Bundle saveInstanceState) {
         setContentView(R.layout.your_layout);

         lv = (ListView) findViewById(R.id.your_list_view_id);

         // Instanciating an array list (you don't need to do this, 
         // you already have yours).
         List<String> your_array_list = new ArrayList<String>();
         your_array_list.add("foo");
         your_array_list.add("bar");

         // This is the array adapter, it takes the context of the activity as a 
         // first parameter, the type of list view as a second parameter and your 
         // array as a third parameter.
         ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                 this, 
                 android.R.layout.simple_list_item_1,
                 your_array_list );

         lv.setAdapter(arrayAdapter); 
    }
}

1
@ Amokrane Chentir : u를 얻을 수 없습니다 ..... u pls 전체 프로그램을 입력 할 수
있습니까

1
@KanNaN : 물론입니다. 제 편집이 당신에게 더 명백한 지 알 수 있습니까?
Amokrane Chentir

1
@ Amokrane Chentir : "findViewById"전에 "setContentView"메서드를 호출해야한다고 생각합니다. 그렇지 않으면 ListView를 찾을 수 없습니다.
Petru

List <문자열>이 (가) 인식되지 않습니다. 왜? 나는 안드로이드 스튜디오를 사용하고 있습니다.
Ali.Rashidi


11

ArrayList를 사용하여 listview를 채우려면 아래 답변을 시도하십시오.

public class ExampleActivity extends Activity
{
    ArrayList<String> movies;

    public void onCreate(Bundle saveInstanceState)
    {
       super.onCreate(saveInstanceState);
       setContentView(R.layout.list);

       // Get the reference of movies
       ListView moviesList=(ListView)findViewById(R.id.listview);

       movies = new ArrayList<String>();
       getMovies();

       // Create The Adapter with passing ArrayList as 3rd parameter
       ArrayAdapter<String> arrayAdapter =      
                 new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, movies);
       // Set The Adapter
       moviesList.setAdapter(arrayAdapter); 

       // register onClickListener to handle click events on each item
       moviesList.setOnItemClickListener(new OnItemClickListener()
       {
           // argument position gives the index of item which is clicked
           public void onItemClick(AdapterView<?> arg0, View v,int position, long arg3)
           {
               String selectedmovie=movies.get(position);
               Toast.makeText(getApplicationContext(), "Movie Selected : "+selectedmovie,   Toast.LENGTH_LONG).show();
           }
        });
    }

    void getmovies()
    {
        movies.add("X-Men");
        movies.add("IRONMAN");
        movies.add("SPIDY");
        movies.add("NARNIA");
        movies.add("LIONKING");
        movies.add("AVENGERS");   
    }
}

2
public class Example extends Activity
{
    private ListView lv;
    ArrayList<String> arrlist=new ArrayList<String>();
    //let me assume that you are putting the values in this arraylist
    //Now convert your arraylist to array

    //You will get an exmaple here

    //http://www.java-tips.org/java-se-tips/java.lang/how-to-convert-an-arraylist-into-an-array.html 

    private String arr[]=convert(arrlist);
    @Override
    public void onCreate(Bundle bun)
    {
        super.onCreate(bun);
        setContentView(R.layout.main);
        lv=(ListView)findViewById(R.id.lv);
        lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , arr));
        }
    }

0

다음은 목록보기를 구현할 수있는 방법의 예입니다.

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

    //We have our list view
    final ListView dynamic = findViewById(R.id.dynamic);

    //Create an array of elements
    final ArrayList<String> classes = new ArrayList<>();
    classes.add("Data Structures");
    classes.add("Assembly Language");
    classes.add("Calculus 3");
    classes.add("Switching Systems");
    classes.add("Analysis Tools");

    //Create adapter for ArrayList
    final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, classes);

    //Insert Adapter into List
    dynamic.setAdapter(adapter);

    //set click functionality for each list item
    dynamic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.i("User clicked ", classes.get(position));
        }
    });



}

Android Studio를 사용하는 경우 onItemClick () 메서드를 자동으로 채 웁니다. 이제해야 할 일은 기능을 추가하는 것뿐입니다. 제 경우에는 목록의 각 요소를 기록했습니다.
에드 Sadman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.