在ListView的getView()中获取视图项目位置

时间:2013-07-03 11:56:30

标签: android

美好的一天,在我的自定义适配器类中覆盖了isEnabled()之后,我希望能够为isEnabled()返回false的某些项目更改Textview的颜色。为此,我必须检查getView()方法中的每个项目位置。我的问题是如何根据列表中的位置获取此Textview

我试图找到一种在getView中使用mstring[position]的方法,但这只会返回一个字符串。而不是意见。

有什么想法吗?得到了很多赞赏

代码:

    @Override
    public int getCount(){
        return mstring.length;    //Array of Strings
    }

    @Override
    public String getItem(int position){
        return mstring[position];
    }

    @Override
    public long getItemId(int position){
        return position;
    }

@Override
        public boolean isEnabled(int position) {
            int set = 0;
            switch(position){
            case DATA_A:
                    if(a_data == 1){
                        set = 1;
                    }else {
                        set = 0;
                    }
            break;

            case DATA_B:
                if(b_data == 1){
                    set = 1;
                }else {
                    set = 0;
                }
            break;

            case DATA_C:
                if(c_data == 1){
                    set = 1;
                }else {
                    set = 0;
                }
            break;
            }

            return (set == 1)? true:false;
        }

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

            if(convertView == null){
                LayoutInflater inflater = LayoutInflater.from(mContext);
                convertView = inflater.inflate(ViewResourceId, null);
                holder = new ViewHolder();


              holder.imageview = (ImageView)convertView.findViewById(R.id.menu_image_item);
              holder.text_title = (TextView)convertView.findViewById(R.id.menu_textview_id);
              holder.arrowImageView = (ImageView)convertView.findViewById(R.id.menu_arrow_id);

              convertView.setTag(holder);

            }
            else{
                holder = (ViewHolder)convertView.getTag();
            }

            //set Array text values defined in xml to textview
            String title = mstring[position];
            holder.text_title.setText(title);

            //set Array icons values defined in xml to textview
            holder.imageview.setImageDrawable(icons.getDrawable(position));


         /*!!!Having the troubles here!!!!! giving NullPointerException!!!! and not
          sure what to try*/

         if(!myListView.getChildAt(position).isEnabled()){

               holder.text_title.setTextColor(R.color.greyed_text_color);
           }

            return convertView;
        }


    }

1 个答案:

答案 0 :(得分:1)

你应该发布整个代码,否则很难发现什么是错的。如果我是你,我会检查返回此行的结果:

myListView.getChildAt(position)
你在这一行中使用的

if(!myListView.getChildAt(position).isEnabled()){