0

我有一个带有自定义适配器的列表视图。列表视图中的每个项目都有一个图像视图、文本视图和一个复选框。

我的要求是,如果特定项目中文本视图的值为“xyz”,我必须将该复选框设置为不可编辑(应始终选中该复选框,并且不允许用户取消选中它)。

我试过,设置,setClickable(false)setEnabled(false),但都没有工作。请看下面的代码...

`

    @Override
    public View getView(final int position, View convertView, ViewGroup root) {
        View view = convertView;

        if (view == null)
            view = inflater.inflate(R.layout.item_favorite_list, null);

        view.setTag(teams.get(position).get("name"));


        ((TextView) view.findViewById(R.id.name)).setText(teams.get(
                position).get("name"));

        String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
        Log.d(Const.TAG, "Name = "+name);


        CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkBox);
        checkBox.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                CheckBox checkBox = (CheckBox) view;
                // do something here..
        });

        if (favoriteTeams.contains(teams.get(position).get("name")))
            checkBox.setChecked(true);
        else
            checkBox.setChecked(false);

                    //Need to set the checkBox to non-editable
        if(teams.get(position).get("name").equalsIgnoreCase("xyz"))
        {
            Log.d(Const.TAG, "Position = "+position);
            Log.d(Const.TAG, "Team = "+teams.get(position).get("name").toString());
            checkBox.setClickable(false);
            checkBox.setEnabled(false);
        }



        return view;
    }
}

`

4

3 回答 3

0

你不需要一个 onCheckedChangeListener 吗?

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {

   }
}
于 2013-09-10T12:03:52.660 回答
0

好的,这就是我所做的..

` 
//if(teams.get(position).get("name").equalsIgnoreCase("xyz"))
            if(view.getTag().toString().equalsIgnoreCase("xyz"))
            {

                Log.d(Const.TAG, "View is Clickable = "+view.isClickable());    
                view.setBackgroundColor(Color.BLUE);
                checkBox.setClickable(false);
            }
            else
            {
                view.setClickable(false);
                view.setBackgroundColor(Color.WHITE);
                checkBox.setClickable(true);

            }
`

坦率地说,我不确定这是否是最好的方法,但它确实有效。如果有人有更好的方法,请分享。

于 2013-09-10T12:41:18.047 回答
0

你可以试试 checkBox.setOnClickListener(null);

于 2013-09-10T12:06:30.943 回答