Java 如何在具有图像和文本的自定义材质微调器中仅获取文本
我有一个显示图像和文本的材质微调器,但我只想检索选中的文本。但它正在返回空值 我的适配器类Java 如何在具有图像和文本的自定义材质微调器中仅获取文本,java,android,spinner,Java,Android,Spinner,我有一个显示图像和文本的材质微调器,但我只想检索选中的文本。但它正在返回空值 我的适配器类 public class SpinnerCustomAdapter extends BaseAdapter { Context context; int cat_pics[]; ArrayList<String> categoryNames; LayoutInflater inflter; public SpinnerCustomAdapter(
public class SpinnerCustomAdapter extends BaseAdapter {
Context context;
int cat_pics[];
ArrayList<String> categoryNames;
LayoutInflater inflter;
public SpinnerCustomAdapter(Context applicationContext, int[] cat_pics, ArrayList<String> categoryNames) {
this.context = applicationContext;
this.cat_pics = cat_pics;
this.categoryNames = categoryNames;
inflter = (LayoutInflater.from(applicationContext));
}
@Override
public int getCount() {
return cat_pics.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = inflter.inflate(R.layout.custom_spinner_items, null);
ImageView icon = (ImageView) view.findViewById(R.id.imageView);
TextView names = (TextView) view.findViewById(R.id.textView);
icon.setImageResource(cat_pics[i]);
names.setText(categoryNames.get(i));
return view;
}
}
被选中
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(parent.getContext(), "Selected Item : " + customAdapter.getItem(position) ,
Toast.LENGTH_LONG).show();
}
@覆盖
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
Toast.makeText(parent.getContext(),“所选项目:”+customAdapter.getItem(位置),
Toast.LENGTH_LONG).show();
}
尝试以下操作:
spinner.getSelectedItem().toString()
(或)
在MSelectedListener中:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("SeletedItem",adapterView.getSelectedItem().toString());
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
Log.d(“SeletedItem”,adapterView.getSelectedItem().toString());
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
在SpinnerCustomAdapter
中,您的getItem()
方法返回null
@Override
public Object getItem(int i) {
return null;
}
更新getItem()
方法如下:
@Override
public Object getItem(int i) {
return categoryNames.get(i);
}
#.您还可以使用父项.getItemAtPosition(position)
来获取选中的项
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "Selected Item : "
+ parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
}
@覆盖
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
Toast.makeText(getApplicationContext(),“所选项目:”
+parent.getItemAtPosition(position.toString(),Toast.LENGTH_LONG.show();
}
像这样试试,可能会对你有所帮助
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String text = spinner.getItemAtPosition(i)
Toast.makeText(getApplicationContext(), "Selected : " text, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
String text=spinner.getItemAtPosition(i)
Toast.makeText(getApplicationContext(),“Selected:“text,Toast.LENGTH_SHORT).show();
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});
我尝试了这两种方法,但它们都仍然返回“null”,这很有效。它没有更改getItem()处的返回值。谢谢
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String text = spinner.getItemAtPosition(i)
Toast.makeText(getApplicationContext(), "Selected : " text, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});