我有自定义适配器的列表视图。列表视图中的每个项目都有一个imageview,textview和一个复选框。
我的要求是,如果特定项目中textview的值为“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;
}
}
`
答案 0 :(得分:0)
你不需要onCheckedChangeListener吗?
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
}
}
答案 1 :(得分:0)
checkBox.setOnClickListener(null);
答案 2 :(得分: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);
}
`
坦率地说,我不确定,如果这是最好的方法,但它确实有效。如果某人有更好的方法,请分享。