Я установил setOnCheckedChangeListener
для Checkbox
в моем представлении, этот вид представляет строку в listView
. Когда я проверяю этот флажок, функция onCheckedChanged()
продолжает работать без остановок! как заставить его работать только один раз за проверку? этот код в адаптере listView
:Событие в адаптере держит стрельбу без остановки
checkedItem.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.d("--esmaSel--", "check result="+isChecked);
if(isChecked) {
if (!callRecorderClass.CheckedItemsIDs.contains(allCalls.get(position).getStringExtra(DBmanager.ID)))
callRecorderClass.CheckedItemsIDs.add(allCalls.get(position).getStringExtra(DBmanager.ID));
} else {
Log.d("--esmaSel--", "remove---");
callRecorderClass.CheckedItemsIDs.remove(allCalls.get(position).getStringExtra(DBmanager.ID));
}
//todo:Send a BroadCast that change is made
Intent topMenuNoty=new Intent();
Log.d("--esmaSel--", "will send BC"+position);
topMenuNoty.setAction("showHide");
LocalBroadcastManager.getInstance(context).
sendBroadcast(topMenuNoty);
}
});
посылает много передач, когда я просто проверить его один раз! и я проверяю положение, это то же положение! может ли это помочь? ВОТ МОЯ RECEIVER
public BroadcastReceiver refresh = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
String action = intent.getAction();
Log.d("--sel--", "got ShowHide");
if (action.equals("showHide"))
{
Log.d("--sel--", "got " + action);
View v= findViewById(R.id.top_menu);
Log.d("--sel--", "null view ");
if(v==null) return;
if(CheckedItemsIDs.isEmpty())
findViewById(R.id.top_menu).setVisibility(View.GONE);
else findViewById(R.id.top_menu).setVisibility(View.VISIBLE);
List<Intent> list= new DBmanager(context).getInboxCalls();
if(list!=null&&list.size()>0) {
ListView inboxCalls = (ListView) findViewById(R.id.indexCalls);
inboxCalls.setAdapter(new inboxAdapter(context,R.layout.incox_call_row,list));
}
}
}
};
использование концепции флага. если u хочет только один раз быть выполненным – Athul
Можете ли вы опубликовать свой трансляционный приемник? – Hahn
см. Отредактированный вопрос. – EsmaeelQash