Простой способ сделать это - использовать ArrayAdapter, созданный с использованием this конструктора .Второй и третий параметры - это идентификатор макета каждой строки (который можно определить в файле XML) и, соответственно, идентификатор текстового поля из этого макета, которое может представлять ваши элементы.
Например, выможет иметь макет, определенный следующим образом (row.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"/>
<TextView
android:id="@+id/weekofday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Затем вы можете создать свой ArrayAdapter следующим образом:
package com.exercise.AndroidCustomSpinner;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class AndroidCustomSpinner extends Activity {
String[] DayOfWeek = {"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner mySpinner = (Spinner)findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.row, R.id.weekofday, DayOfWeek);
mySpinner.setAdapter(adapter);
}
}
Обратите внимание на вызов ArrayAdapter<String>(this,
R.layout.row, R.id.weekofday, DayOfWeek);
, который определяет строкурасположение как R.layout.row
, текстовое поле, которое показывает данные R.id.weekofday
и данные в массив DayOfWeek
.
Единственным недостатком этого является то, что вы не можете изменить значок для каждого элемента ... еслиВы хотите сделать это, вы хотите переопределить BaseAdapter.getView (), чтобы создать (или повторно использовать) представление для каждой строки счетчика почти так же, как вы сделали бы для ListView.Буквально сотни учебных пособий о том, как это сделать.