我制作了一个自定义微调器,以填充来自mysql DB的图像和文本列表 当我尝试从微调器中选择一个项目时,即使调试并在听众内部放置一个断点,它也不会进入。 我的适配器:
public class SpinnerShopAdapter extends ArrayAdapter<supermarketspinnerGS> {
private Context mcontext;
ArrayList<supermarketspinnerGS> SavedListContent;
public SpinnerShopAdapter(Context context, ArrayList<supermarketspinnerGS> SavedListContent) {
super(context, 0, SavedListContent);
this.mcontext = context;
this.SavedListContent = SavedListContent;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return initView(position, convertView, parent);
}
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return initView(position, convertView, parent);
}
private View initView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(
R.layout.spinner_supermarket_row, parent, false
);
}
ImageView imvSupermaket = convertView.findViewById(R.id.spinner_supermarket_imageView);
TextView tvSupamrketname = convertView.findViewById(R.id.spinner_supermarket_name);
TextView tvIdShop = convertView.findViewById(R.id.spinner_supermarket_idshop);
supermarketspinnerGS currentItem = getItem(position);
if (currentItem != null) {
Glide.with(context).load(currentItem.getImage()).into(imvSupermaket);
tvSupamrketname.setText(currentItem.getName());
tvIdShop.setText(currentItem.getIdshop());
}
return convertView;
}
}
onCreate代码:
spinnerStore = (Spinner) findViewById(R.id.saveditemlist_spinner_storeshead);
adapterHead = new SpinnerShopAdapter(ActivitySavedListItem.this, getListHeadArray);
spinnerStore.setAdapter(adapterHead);
spinnerStore.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
supermarketspinnerGS clickedItem = (supermarketspinnerGS) parent.getItemAtPosition(position);
String clickedshopName = clickedItem.getIdshop();
selectedItemText=getListHeadArray.get(spinnerStore.getSelectedItemPosition()).getIdshop();
Toast.makeText(ActivitySavedListItem.this, clickedshopName + " selected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
我真的不知道出什么问题了,期待您的帮助。如果您需要更多详细信息,请随时问我,我很乐意更新我的帖子
编辑: XML SPINNER
<LinearLayout
android:layout_width="200dp"
android:layout_height="30dp"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:background="@drawable/spinner_market_shape"
app:layout_constraintStart_toEndOf="@+id/textView13"
app:layout_constraintTop_toBottomOf="@+id/textView10">
<Spinner
android:id="@+id/saveditemlist_spinner_storeshead"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="15dp"
android:paddingRight="15dp" />
</LinearLayout>
spinner_supermarket_row.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/spinner_supermarket_imageView"
android:layout_width="75dp"
android:layout_height="25dp"
android:layout_marginStart="4dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:clickable="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/spinner_supermarket_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:visibility="invisible"
/>
<TextView
android:id="@+id/spinner_supermarket_idshop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:visibility="invisible"
/>
</RelativeLayout >
答案 0 :(得分:0)
不确定,但是
我认为您必须在initView函数的Spinner自定义适配器中设置Spinner项目Click侦听器
像这样:
private View initView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(
R.layout.spinner_supermarket_row, parent, false
);
}
ImageView imvSupermaket = convertView.findViewById(R.id.spinner_supermarket_imageView);
TextView tvSupamrketname = convertView.findViewById(R.id.spinner_supermarket_name);
TextView tvIdShop = convertView.findViewById(R.id.spinner_supermarket_idshop);
supermarketspinnerGS currentItem = getItem(position);
if (currentItem != null) {
Glide.with(context).load(currentItem.getImage()).into(imvSupermaket);
tvSupamrketname.setText(currentItem.getName());
tvIdShop.setText(currentItem.getIdshop());
}
parent.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(position==CUSTOM_POSITION){ /*do something*/}
}
});
return convertView;
}
我希望为您工作
答案 1 :(得分:0)
尝试向XML微调器行上的所有元素添加clickable = false