微调器给出的资源 ID 无效

Spinner gives Resource ID is not valid

我使用了装有 SpinnerAdapter 适配器的旋转器 sp,当 运行 应用程序时,旋转器将填充 Arraylist 列表的第一项 包含 img 和文本但是当我点击微调应用程序停止并且 Android 监视器说:资源 ID #0x7f0e00d5 类型 #0x12 无效 .我看过一些与我的案例类似的案例,但没有帮助,这是我的代码:

   public class Serivce_Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.service_activity);

        ArrayList<ItemData> list = new ArrayList<>();
        list.add(new ItemData("tvsupport", R.drawable.com1_tvsupport));
        list.add(new ItemData("refrigerator", R.drawable.com2_refrigerator));
        list.add(new ItemData("wifi", R.drawable.com4_wifi));
        list.add(new ItemData("plumbing", R.drawable.com5_plumbing));

        Spinner sp = (Spinner) findViewById(R.id.request_spinner1);
        SpinnerAdapter adapter = new SpinnerAdapter(this, R.layout.spinner_layout, R.id.txt, list);
        sp.setAdapter(adapter);
  }
}

这是 SpinnerAdapter class :

class SpinnerAdapter extends ArrayAdapter<ItemData>{
    private int groupid;
    Activity context;
    private ArrayList<ItemData> list;
    private LayoutInflater inflater;
    SpinnerAdapter(Activity context, int groupid, int id, ArrayList<ItemData> list){
        super(context,id,list);
        this.list=list;
        inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.groupid=groupid;
    }
    @NonNull
    public View getView(int position, View convertView, @NonNull ViewGroup parent){
        View itemView=inflater.inflate(groupid,parent,false);
        ImageView imageView=(ImageView)itemView.findViewById(R.id.img);
        imageView.setImageResource(list.get(position).getImageId());
        TextView textView=(TextView)itemView.findViewById(R.id.txt);
        textView.setText(list.get(position).getText());
        return itemView;
    }
   public View getDropDowenView(int position,View convertView,ViewGroup parent){
    return getView(position,convertView,parent);
   }
}

物品数据:

public class ItemData {
    String text;
    Integer imageId;

    public ItemData(String text, Integer imageId) {
        this.text = text;
        this.imageId = imageId;
    }
    public String getText(){
        return text;
    }

    public Integer getImageId(){
        return imageId;
    }
}

旋转器代码:

                <Spinner
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:id="@+id/request_spinner1"
                    android:layout_gravity="center"
                   >
                </Spinner>

spinner_layout :

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/img"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_marginLeft="20dp"
        android:src="@drawable/com0_yourrequest" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <TextView
        android:id="@+id/txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/selection"
        android:textColor="#2d5d13"
        android:textSize="20sp" />
</LinearLayout>

在您的微调器布局中尝试删除此行

android:src="@drawable/com0_yourrequest"

我认为缺少此资源。并检查其他资源是否在您的 res 文件夹中也检查名称 carefully.Hope 它有帮助!

在此处检查拼写:

public View getDropDowenView(int position,View convertView,ViewGroup parent){ return getView(position,convertView,parent); }

并将 getDropDowenView 的拼写更改为 getDropDownView