首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在具有图像和文本的自定义材料旋转器中只获取文本

如何在具有图像和文本的自定义材料旋转器中只获取文本
EN

Stack Overflow用户
提问于 2017-06-07 10:59:07
回答 3查看 696关注 0票数 0

我有一个材料旋转器,它显示一个图像和文本,但我只想检索OnItemSelected中的文本。但它正在返回null。

我的适配器类

代码语言:javascript
运行
复制
   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;
    }
}

在主活动中设置适配器

代码语言:javascript
运行
复制
 customAdapter=newSpinnerCustomAdapter(getApplicationContext(),cat_pics,allCatNames);
    spCategories.setAdapter(customAdapter);
    spCategories.setOnItemSelectedListener(this);

onItemSelected

代码语言:javascript
运行
复制
@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();
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-07 11:19:08

SpinnerCustomAdapter中,getItem()方法返回null

代码语言:javascript
运行
复制
@Override
public Object getItem(int i) {
    return null;
}

getItem() 方法,如下所示:

代码语言:javascript
运行
复制
@Override
public Object getItem(int i) {
    return categoryNames.get(i);
}

#.您也可以使用parent.getItemAtPosition(position)获得选定的item

代码语言:javascript
运行
复制
@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();
}
票数 1
EN

Stack Overflow用户

发布于 2017-06-07 11:09:22

尝试以下几点:

代码语言:javascript
运行
复制
spinner.getSelectedItem().toString()

(或)在OnItemSelectedListener内部:

代码语言:javascript
运行
复制
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) {

            }
        });
票数 0
EN

Stack Overflow用户

发布于 2017-06-07 11:39:03

就像这样,也许能帮到你

代码语言:javascript
运行
复制
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) {

        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44410771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档