Android自定义微调器SelectedItem

Android自定义微调器SelectedItem,android,spinner,Android,Spinner,我制作了一个微调器,其中我使用arrayadapter来填充图像和文本。在选中时,我只想选择文本,而不想选择图像 这是我的MainActivity.java代码 ArrayList<ItemData> list = new ArrayList<>(); list.add(new ItemData("Select Plan Category",R.drawable.ic_bars)); list.add(new ItemData("Hookah",R.drawable.i

我制作了一个微调器,其中我使用arrayadapter来填充图像和文本。在选中时,我只想选择文本,而不想选择图像

这是我的MainActivity.java代码

ArrayList<ItemData> list = new ArrayList<>();

list.add(new ItemData("Select Plan Category",R.drawable.ic_bars));
list.add(new ItemData("Hookah",R.drawable.ic_006_hookah));
list.add(new ItemData("Drinks",R.drawable.ic_005_pint));
list.add(new ItemData("Gedi",R.drawable.ic_004_racing));
list.add(new ItemData("Snacks",R.drawable.ic_003_chips));
list.add(new ItemData("Shopping",R.drawable.ic_002_cart));
list.add(new ItemData("Bownling",R.drawable.ic_001_bowling));

SpinnerAdapter adapter = new SpinnerAdapter(getActivity(), R.layout.spinner_layout,R.id.categoryText,list);
categorySpinnerjava.setAdapter(adapter);
下面是我的SpinnerAdapter.java代码(它扩展了ArrayAdapter

int groupid;
Activity getActivity;
ArrayList<ItemData> list;

LayoutInflater inflater;

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

}

public View getView(int position, View convertView, ViewGroup parent)
{

    View itemView = inflater.inflate(groupid,parent,false);

    ImageView imageView=(ImageView)itemView.findViewById(R.id.categoryVector);
    imageView.setImageResource(list.get(position).getImageId());

    TextView textView = (TextView)itemView.findViewById(R.id.categoryText);
     textView.setText(list.get(position).getPlanCategorytext());


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

它给了我一个“applicationpackage”的输出。ItemData@randomnumbers“

尝试使用
接口实现

SpinnerAdapter
中设置文本数据,并在
活动
类中扩展
界面
,以获取所选文本

尝试以下操作:

String spinnerselection = ((ItemData) categorySpinnerjava.getSelectedItem()).getPlanCategorytext();

还没有尝试,但理论上它应该可以工作。

您之所以会出现此错误,是因为

“应用程序包。ItemData@randomnumbers"

您的
类别PinnerJava.getSelectedItem();
返回您的模型类
项目数据
不是
字符串

试试这个

ItemData itemData = (ItemData) categorySpinnerjava.getSelectedItem();
String data= itemData.getPlanCategorytext();
Integer imageId = itemData.getImageId();
覆盖适配器中的getItem()
。原因
getSelectedItem()
返回:

adapter.getItem(位置);

试着这样,

 ItemData spinnerselection = (ItemData)categorySpinnerjava.getSelectedItem();
String plan = spinnerselection.getPlanCategorytext();

可以通过以下方式获取选定微调器项的文本:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) {
            String selectedText=list.get(pos).getPlanCategorytext();
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
其中列表是包含ItemData的arraylist,您在上面使用它来填充微调器中的数据

关于这一点:

String spinnerselection = categorySpinnerjava.getSelectedItem().toString();

您必须用
list.get(spinner.getSelectedItemPosition()).getPlanCategorytext()替换
categorySpinnerjava.getSelectedItem().toString();
我使用了字符串selectedText=list.get(pos.getPlanCategorytext());但它要求我声明ArrayList final。它可以工作,但ArrayList的声明与final有什么区别?生成final将确保字段是常量且不能更改。这将保证方法中任何位置使用的值都引用传递的值。@ujwalbassi,如果有效,请接受为answ呃。
 ItemData spinnerselection = (ItemData)categorySpinnerjava.getSelectedItem();
String plan = spinnerselection.getPlanCategorytext();
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) {
            String selectedText=list.get(pos).getPlanCategorytext();
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
String selectedItemText=list.get(spinner.getSelectedItemPosition()).getPlanCategorytext();
String spinnerselection = categorySpinnerjava.getSelectedItem().toString();