【发布时间】:2018-07-11 05:04:47
【问题描述】:
我在使用 Spinner 时遇到问题。我有一个用于Spinner 的自定义适配器。这是代码:
public class CategoriaArrayAdapter extends ArrayAdapter<Categoria> {
private Context context;
private ArrayList<Categoria> values;
public CategoriaArrayAdapter(Context context, int textViewResourceId,
ArrayList<Categoria> values) {
super(context, textViewResourceId, values);
this.context = context;
this.values = values;
}
public View myCustomView(int position, @Nullable View myView, @NonNull ViewGroup parent){
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View customView = layoutInflater.inflate(R.layout.row_buscar_categoria_nothing_selected, parent, false);
TextView textCategoria = customView.findViewById(R.id.tv_categoria_empty);
textCategoria.setText(values.get(position).getNombre());
return customView;
}
@Override
public int getCount(){
return values.size();
}
@Override
public Categoria getItem(int position){
return values.get(position);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return myCustomView(position, convertView, parent);
}
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return myCustomView(position, convertView, parent);
}
}
是的,我是用 Java 制作的,因为我对 kotlin 没有太多经验。 好吧,这是我的适配器的实现:
private fun eventSpinners(){
myCustomAdapter = CategoriaArrayAdapter(context, R.layout.row_buscar_categoria_nothing_selected,categoriaArray)
categoriaSpinner.adapter = myCustomAdapter
categoriaSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
override fun onNothingSelected(parent: AdapterView<*>?) {
Log.d("BuscarActivity", "May not work")
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
Toast.makeText(context, "Works!", Toast.LENGTH_LONG).show()
}
}
}
所以,我的问题是当视图膨胀时,Spinner 不显示
ArrayList 的第一个元素。
当我点击数组的一个元素时,什么也没有发生。
知道可能是什么问题吗?
更新:
这是我所在行的 xml。
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv_categoria_empty"
style="?android:attr/spinnerItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="Seleccionar"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
微调器微调器位于 xml 中的此块内:
<android.support.constraint.ConstraintLayout
android:id="@+id/constraint_linea"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginEnd="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="17dp"
android:background="@drawable/shape_button_buscar"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/contrasint_edit_text">
<Spinner
android:id="@+id/spinner_linea"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:paddingLeft="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/divider"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
【问题讨论】:
-
发布您的 XML 文件。
-
@Ankita xml 的 Activity 或 spinner 的行?
-
旋转器块。
-
通过获取 size 来检查您的 categoriaArray 是否包含值。
-
是的,它有值。我使用 LogCat 进行检查
标签: android kotlin android-spinner