微调器给出的资源 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
我使用了装有 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