내 Android
앱 ListView
은 ArrayList
.
이 작업을 수행하는 데 문제가 있습니다. 누군가 코드로 나를 도울 수 있습니까?
답변
ArrayAdapter
ArrayList (또는 다른 컬렉션)를 레이아웃의 항목 (ListView, Spinner 등)에 맞게 조정 하는 을 통해 수행해야합니다 .
이것은 무엇 안드로이드 개발자 가이드는 말한다 :
ListAdapter
A를 관리하는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);
}
}
답변
또한 ArrayAdapter 인터페이스를 찾습니다 .
ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
답변
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");
}
}
답변
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));
}
}
답변
다음은 목록보기를 구현할 수있는 방법의 예입니다.
@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));
}
});
}