public void setAvailability( TableRow row1, TextView on1, TextView off1, Switch switch1, Integer index1) { final TableRow row = row1; final TextView on = on1; final TextView off = off1; final Switch switch_available = switch1; final Integer index = index1; row.setFocusableInTouchMode(true); row.setFocusable(true); row.setClickable(true); row.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { row.requestFocus(); Log.d("row touch", "getFocus " + row.hasFocus()); on.setVisibility(View.VISIBLE); off.setVisibility(View.VISIBLE); switch_available.setVisibility(View.VISIBLE); if (wordRecordArrayList.get(index).getAvailable().intValue() == 1) { switch_available.setChecked(true); } return false; } }); row.setOnFocusChangeListener( new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { on.setVisibility(View.INVISIBLE); off.setVisibility(View.INVISIBLE); switch_available.setVisibility(View.INVISIBLE); } }); switch_available.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { if (dataAdapter1.updateAvailability(wordRecordArrayList.get(index).getC_id(), 1)) { AlertDialog dialog = new AlertDialog.Builder(getContext()) .setTitle("記錄將會程式中啓用") .setMessage("記錄將會程式中啓用") .setPositiveButton( android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { setWordList(); } }) .show(); } } if (!isChecked) { if (dataAdapter1.updateAvailability(wordRecordArrayList.get(index).getC_id(), 0)) { setWordList(); AlertDialog dialog = new AlertDialog.Builder(getContext()) .setTitle("記錄將不會程式中啓用") .setMessage(String.valueOf(isChecked)) .setPositiveButton( android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { setWordList(); } }) .show(); } else { AlertDialog dialog = new AlertDialog.Builder(getContext()) .setTitle("更改失敗") .setMessage("更改失敗") .setPositiveButton( android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { setWordList(); } }) .show(); } } } }); }