【问题标题】:Spinner hide the firstitem of dropdown view in androidSpinner在android中隐藏下拉视图的第一项
【发布时间】:2014-06-16 10:29:00
【问题描述】:

我有一个微调器,当我单击微调器时,我有一个自定义适配器来添加图像和文本,他应该隐藏第一个项目的数组。 我试过下面的代码它的工作第一个项目已经消失了,但是remaning项目有不可见模式,如何解决这个问题

这是我的代码

private String[] accident_type_content = { "Type Of emergency","Road Accident", "Medical Emergency", "Crime", "Poisoning", "Fire","Drowning" };
private int accident_type_content_images[] = {R.drawable.ic_type_of_emergency, R.drawable.ic_road_accident,R.drawable.ic_medical_emergency, R.drawable.ic_crime_rape,R.drawable.ic_posion, R.drawable.ic_fire, R.drawable.ic_other };

我的数组适配器类

public class AccidentType extends ArrayAdapter<String> {

    Holder holder = new Holder();

    public AccidentType(Context context, int textViewResourceId,
            String[] objects) {
        super(context, textViewResourceId, objects);
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater(null);
        convertView = inflater.inflate(R.layout.no_accident, parent,
                false);

        holder.name = (TextView) convertView.findViewById(R.id.name);
        holder.icon = (ImageView) convertView.findViewById(R.id.image);

        if(position==0)
        {
            holder.icon.setVisibility(View.GONE);
            holder.icon.setVisibility(View.GONE);
        }
        else{
            holder.icon.setVisibility(View.VISIBLE);
            holder.icon.setVisibility(View.VISIBLE);
        }
        return convertView;

    }

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

        return getCustomView(position, convertView, parent);
    }

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

        LayoutInflater inflater = getLayoutInflater(null);
        View row = inflater.inflate(R.layout.no_accident, parent,
                false);

        holder.name = (TextView) row.findViewById(R.id.name);
        holder.icon = (ImageView) row.findViewById(R.id.image);
        holder.name.setText(accident_type_content[position]);

        holder.icon.setVisibility(View.VISIBLE);
        holder.icon.setVisibility(View.VISIBLE);

        if(position==accident_type.getSelectedItemPosition())
        {
            row.setBackgroundColor(getContext().getResources().getColor(R.color.spinner_selected_bg));
        }


        holder.icon.setImageResource(accident_type_content_images[position]);

        return row;
    }
    private class Holder
    {
        TextView name;
        ImageView icon;
    }

}

并添加到微调器中

accident_type.setAdapter(new AccidentType(getActivity(),R.layout.accident_content, accident_type_content));

我想在微调器点击时隐藏“紧急类型”和 ic_type_of_emergency 图像

【问题讨论】:

    标签: android show-hide android-spinner


    【解决方案1】:

    设置要隐藏的索引的索引(或数组列表)。

    public class AccidentType extends ArrayAdapter<String> {
    
        Holder holder = new Holder();
        private int hideItemIndex;
    
        public AccidentType(Context context, int textViewResourceId,
                String[] objects, int hideItemIndex) {
            super(context, textViewResourceId, objects);
            this.hidingItemIndex = hidingItemIndex;
        }
    
        @Override
        public View getDropDownView(int position, View convertView,
                ViewGroup parent) {
            LayoutInflater inflater = getLayoutInflater(null);
            convertView = inflater.inflate(R.layout.no_accident, parent,
                    false);
            convertView= null;
            holder.name = (TextView) convertView.findViewById(R.id.name);
            holder.icon = (ImageView) convertView.findViewById(R.id.image);
    
            if(position==hideItemIndex)
            {
                holder.icon.setVisibility(View.GONE);
                holder.icon.setVisibility(View.GONE);
                convertView= holder;
            }
            else{
                 convertView= super.getDropDownView(position, null, parent);
            }
            return convertView;
    
        }
    

    创建项目列表。

    int hideItemIndex = 0;
    
    CustomAdapter dataAdapter = new CustomAdapter(this, android.R.layout.simple_spinner_item, list, hideItemIndex);
    
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mySpinner.setAdapter(dataAdapter);
    

    我认为这可能会对你有所帮助。

    【讨论】:

    • v = 持有人;是说错误链接更改持有人查看或更改持有人的看法
    • else 部分查看我的编辑并尝试v=icon 让我知道
    • 对不起,我收到一个错误 java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
    • 在哪一行得到ClassCastException
    • 我已经尝试了上面的答案,但是我遇到了同样的错误,比如 convertView= holder;将转换视图更改为持有人或持有人作为视图,在微调器中我正在加载文本和图像,但在适配器中你只添加了文本
    猜你喜欢
    • 2012-04-09
    • 2016-01-15
    • 2017-02-03
    • 2015-05-03
    • 1970-01-01
    • 2016-12-19
    • 2010-12-27
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多