【发布时间】:2017-02-26 22:56:30
【问题描述】:
我正在创建一个简单的应用程序,其中在自定义 ListView [项目名称,项目复选框] 中显示项目列表。
我想根据复选框值更改手段 onCheckChange 更新 Activity 的 UI(显示/隐藏 Button,它不是 ListView 的一部分,而是包含 ListView 和 Button 的 Activity 的一部分)。
下面是我的适配器类getView() 方法代码,它在我要处理的列表加载时调用Activity 方法。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_item, null);
viewHolder = new Holder();
viewHolder.name = (TextView) convertView.findViewById(R.id.textView_Name);
viewHolder.check = (CheckBox) convertView.findViewById(R.id.checkBox);
viewHolder.check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
mainDataList.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
mainDataList.get(position).setLatestChanged(true);
notifyDataSetChanged();
activity.setCopyButton(); //This is the call which hides/shows ACTIVITY BUTTON WHICH I WANT TO HANDLE
}
});
convertView.setTag(viewHolder);
} else {
viewHolder = (Holder) convertView.getTag();
}
viewHolder.check.setTag(position); // This line is important.
viewHolder.name.setText(mainDataList.get(position).getName());
viewHolder.check.setChecked(mainDataList.get(position).isSelected());
return convertView;
}
在ListView 加载android 时,默认情况下它会根据ITEM 值[T/F] 调用viewHolder.check.setOnCheckedChangeListener。我必须阻止该调用,或者以某种方式我想根据手动复选框单击而不是默认处理 UI 更新。
触发点:
activity.setCopyButton(); //This is the call which hides/shows activity button which I want to handle
【问题讨论】:
-
我认为只有在任何列表项选中时才启用按钮?