developer tip

간단한 목록보기를 만드는 Android의 ArrayAdapter

copycodes 2020. 12. 1. 08:22
반응형

간단한 목록보기를 만드는 Android의 ArrayAdapter


나는 ActivityAndroid에서 만들려고했지만 이 활동에는 ListView다른 것이 없습니다.

listview를 채우는 것을 알고 있듯이 ArrayAdapter.

그래서 ArrayAdapter를 이해하기 위해 다음 링크를 읽었습니다.

http://developer.android.com/reference/android/widget/ArrayAdapter.html

그러나 나는 그것을 명확하게 이해할 수 없다!

가장 큰 의문 중 하나는 생성자가 TextView리소스 ID를 필요로하는데 내 활동에는 내가 제공해야하는 TextView가없는 이유입니다.

나는 이것이 유일한 생성자라고 말하는 것이 아니라 그 뒤에있는 논리를 이해할 수 없다는 것입니다.

간단한 목록보기를 만들기 위해 다음 링크도 참조했습니다.

ArrayAdapter 예제를 사용한 간단한 ListView.

그러나 다시 한 번 내 주요 의심은 TextView 리소스 ID가 필요한 이유입니다.

누구든지 예를 들어 설명 할 수 있다면 매우 도움이 될 것입니다.

편집하다:

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

ArrayAdapter는 TextView를 사용하여 그 안의 각 항목을 표시합니다. 이면에서는 toString()보유하고있는 각 개체 메서드를 사용하고 이를 TextView 내에 표시합니다. ArrayAdapter 에는 사용할 수있는 여러 생성자가 있으며 예제에서 사용한 생성자는 다음과 같습니다.

ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)

기본적으로 ArrayAdapter는 기본 TextView를 사용하여 각 항목을 표시합니다. 그러나 원하는 경우 고유 한 TextView를 만들고 TextView 클래스를 확장하여 원하는 복잡한 디자인을 구현할 수 있습니다. 그런 다음 사용을 위해 레이아웃으로 이동해야합니다. textViewResourceId 필드에서이를 참조하여 기본값 대신이보기에 개체를 바인딩 할 수 있습니다.

사용을 위해 생성자를 사용하는 것이 좋습니다.

ArrayAdapter(Context context, int resource, T[] objects). 

귀하의 경우 이것은 다음과 같습니다.

ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values)

그리고 괜찮을 것입니다. 이것은 각 문자열을 기본 TextView 디스플레이 (일반 및 단순한 흰색 배경)에 바인딩합니다.

따라서 질문에 답하기 위해 textViewResourceId를 사용할 필요가 없습니다.


그러나 왜 TextView 리소스 ID가 필요한지에 대한 주요 의심은 무엇입니까?

생성자와 매개 변수를 살펴보십시오.

public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

API 레벨 1 생성자에 추가됨

매개 변수

context 현재 컨텍스트입니다.

resource 보기를 인스턴스화 할 때 사용할 레이아웃이 포함 된 레이아웃 파일의 리소스 ID입니다.

textViewResourceId채울 레이아웃 리소스 내 TextView의 ID 개체 ListView입니다.

android.R.id.text1Android 리소스의 텍스트 ID를 나타냅니다. 따라서 활동에 하나가 필요하지 않습니다.

전체 목록은 다음과 같습니다.

http://developer.android.com/reference/android/R.id.html

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

this 활동 컨텍스트를 나타냄

android.R.layout.simple_list_item_1 simple_list_item_1은 android.R.layout의 레이아웃입니다.

android.R.id.text1 안드로이드 리소스 ID를 나타냅니다.

values 제공 한 링크의 문자열 배열입니다.

http://developer.android.com/reference/android/R.layout.html


public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

여기서 리소스는 뷰를 인스턴스화하는 동안 사용중인 레이아웃의 'id'를 의미합니다.

이제이 레이아웃에는 자체 ID가있는 많은 하위보기가 있습니다. 따라서 textViewResourceId데이터로 채워야하는 자식 뷰를 알려줍니다.


public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

나는 또한 Android를 처음 사용하므로 틀릴 수 있습니다. 그러나 내 이해에 따라 이것을 목록보기 생성에 사용하는 동안 두 번째 인수는 목록 항목의 레이아웃입니다. 레이아웃은 여러보기 (이미지보기, 텍스트보기 등)로 구성됩니다. 세 번째 인수를 사용하면 텍스트를 표시 할보기 또는 텍스트보기를 지정합니다.


필요한 TextView 리소스 ID는 TextView 레이아웃 파일 용이므로 동일한 활동에 있지 않습니다.

You can create it by going to File > New > XML > XML Layout File, and enter the widget type, which is 'TextView' in the root tag field.

Source: https://www.kompulsa.com/the-simplest-way-to-implement-an-android-listview/


You don't need to use id for textview. You can learn more from android arrayadapter. The below code initializes the arrayadapter.

ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);

For your question answer is android.R.id.text1 is int: The id of the TextView within the layout resource to be populated.

ArrayAdapter has so many constructors with different number of arguments I'm mention some of them

ArrayAdapter(Context context, int resource)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int resource, T[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int resource, List<T> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)

Now you can understand each and every constructor is different and they used different list of arguments.

And simple answer is you can use ArrayAdapter with text view inside a target xml file or without. It is doesn't matter. And you not need specify text view id you can use it without. But you may need to go with some advance option with your simple list view you must go with a text view.!

Here sample example

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

This is also a valid code you can use with much more clear.


If you have more than one view in the layout file android.R.layout.simple_list_item_1 then you'll have to pass the third argument android.R.id.text1 to specify the view that should be filled with the array elements (values). But if you have just one view in your layout file, there is no need to specify the third argument.

참고URL : https://stackoverflow.com/questions/19079400/arrayadapter-in-android-to-create-simple-listview

반응형