Spinner setOnItemSelectedListener tidak berfungsi dengan adaptor khusus

Saya telah membuat pemintal khusus untuk mengisi daftar gambar dan teks yang berasal dari DB mysql ketika saya mencoba memilih item dari pemintal, itu tidak berfungsi, bahkan ketika saya men-debug dan meletakkan titik istirahat di dalam pendengar, itu tidak berhasil. jangan masuk. Adaptor Saya:

 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;
    }
}

kode diBuat:

 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) {

        }
    });

Saya benar-benar tidak tahu apa yang salah dan menantikan bantuan Anda. Jika Anda memerlukan detail lebih lanjut, silakan bertanya kepada saya. Saya akan dengan senang hati memperbarui postingan saya

SUNTING: PEMINTAL XML

 <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 >

person Hass    schedule 25.08.2019    source sumber
comment
rekatkan xml Anda juga   -  person Paresh Mayani    schedule 25.08.2019


Jawaban (2)


aku tidak yakin tapi

Saya rasa Anda harus menyetel pendengar klik item pemintal di adaptor khusus pemintal Anda di fungsi initView

seperti ini:

 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;
}

saya harap berhasil untuk Anda

person A.Hosein    schedule 25.08.2019
comment
sayangnya tidak - person Hass; 25.08.2019

coba tambahkan clickable=false ke semua elemen Anda di baris pemintal xml Anda

person Achref ArShavin    schedule 25.08.2019
comment
apakah Anda menambahkan clickable=false ke semua elemen yang Anda harapkan dari RelativeLayout Anda? - person Achref ArShavin; 27.08.2019
comment
Ya saya sudah melakukan itu, tidak bisa mengikuti acara tersebut - person Hass; 27.08.2019