Android EditText OnClickListener issue
I have an app for sale. When the user clicks on the EditText, you can view the calculator popup. In my case, when the user double-clicks on EditText onClickLister
, it only displays the pop-up calculator.
This is myEditText
final EditText txtQty = new EditText(this);
txtQty.setHeight(1);
if(productList.get(i).getQty() != 0.00){
txtQty.setText(Double.toString(productList.get(i).getQty()));
}
txtQty.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,42));
txtQty.setTextSize(9);
txtQty.setId(i);
txtQty.setHint("0");
txtQty.setClickable(true);
txtQty.setSelected(true);
txtQty.setSelectAllOnFocus(true);
txtQty.setInputType(InputType.TYPE_NULL);
tr.addView(txtQty);
This is my code:
txtQty.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String productCode= txtCode.getText().toString();
double price = getProductPrice(productCode).getPrice();
txtPrice.setText(""+price);
if(invPriceEdit.equals("3")){
if(editPrice.getText().toString().equals("") || editPrice.getText().toString().equals("0.00") || editPrice.getText().toString().equals("0") || editPrice.getText().toString().equals("0.0")){
txtPrice.setText(""+ price);
editPrice.setText("" +price);
}else{
String ePrice = editPrice.getText().toString();
editPrice.setText("" +ePrice);
}
}
keyAmount = new StringBuffer();
if(keyAmount.length() > 0){
keyAmount.delete(0, keyAmount.length());
}
int[] origin = new int[2];
v.getLocationOnScreen(origin);
final int xVal = origin[0];
final int yVal = origin[1] ;
dialog = new Dialog(SalesActivityGroup.group.getParent());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
View vLoad = LayoutInflater.from(SalesActivityGroup.group.getParent()).inflate(R.layout.key_pad, null);
dialog.setContentView(vLoad);
android.view.WindowManager.LayoutParams lp= dialog.getWindow().getAttributes();
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
lp.x = xVal;
lp.y = yVal;
lp.width = LayoutParams.WRAP_CONTENT;
lp.height = LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.TOP | Gravity.LEFT;
lp.dimAmount = 0;
dialog.getWindow().setAttributes(lp);
dialog.setCancelable(false);
keyamDisplay = (TextView)dialog.findViewById(R.id.keyamDisplay);
Button txtone = (Button)dialog.findViewById(R.id.txtone);
txtone.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("1");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txttwo = (Button)dialog.findViewById(R.id.txttwo);
txttwo.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("2");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txtthree = (Button)dialog.findViewById(R.id.txtthree);
txtthree.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("3");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txtfour = (Button)dialog.findViewById(R.id.txtfour);
txtfour.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("4");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txtfive = (Button)dialog.findViewById(R.id.txtfive);
txtfive.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("5");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txtsix = (Button)dialog.findViewById(R.id.txtsix);
txtsix.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("6");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txtseven = (Button)dialog.findViewById(R.id.txtseven);
txtseven.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("7");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txteight = (Button)dialog.findViewById(R.id.txteight);
txteight.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("8");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txtnine = (Button)dialog.findViewById(R.id.txtnine);
txtnine.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("9");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txtZero = (Button)dialog.findViewById(R.id.txtZero);
txtZero.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append("0");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button txtdot = (Button)dialog.findViewById(R.id.txtdot);
txtdot.setEnabled(false);
txtdot.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
keyAmount.append(".");
keyamDisplay.setText("" + keyAmount.toString());
}
});
Button diaDelete = (Button)dialog.findViewById(R.id.diaDelete);
diaDelete.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(keyAmount.length() > 0){
keyAmount.delete(keyAmount.length()-1, keyAmount.length());
}
keyamDisplay.setText("" + keyAmount.toString());
}
});
ImageButton imageSmileExit = (ImageButton)dialog.findViewById(R.id.imageSmileExit);
imageSmileExit.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
Button txtDialogOK = (Button)dialog.findViewById(R.id.txtDialogOK);
txtDialogOK.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
}
This is a problem for Selling Rep. They want to double click on each clcik product.
I want to display a popup calculator when the user selects a textEditor. (No double click required).
This is my code:
final EditText txtQty = new EditText(this);
txtQty.setHeight(1);
if(productList.get(i).getQty() != 0.00){
txtQty.setText(Double.toString(productList.get(i).getQty()));
}
txtQty.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,42));
txtQty.setTextSize(9);
txtQty.setId(i);
txtQty.setHint("0");
txtQty.setInputType(InputType.TYPE_NULL);
tr.addView(txtQty);
Problem:
`TableLayout contains a list of product details when the user clicks on a Qty, this is a popup calculator after entering a value, it will clear the Focus on that EditText qty row and jump to the first Row EditText '
this is my screen image
source to share
If it looks like you never want the user to enter this value through the KeyBoard and want the user to enter the value from the dialog.
Then why use EditText
, you may have TextView
to give it the correct background and text font.
And then write an onClickListener for that TextView
source to share
You can try adding this to your code (on the click event):
EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
And it can also be a problem, maybe somewhere in your XML files, it says <requestFocus />
. remove this
source to share
If I understand your question correctly, you mean "Do sth" when the user "double-clicks" on the EditText.
Not sure if this is the best solution, Here is a sample for that. Mimic "double clicks" on a 500ms countdown.
private EditText ed1;
private CountDownTimer timer;
private Boolean isWaiting = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ed1 = (EditText) findViewById(R.id.editText1);
timer = new CountDownTimer(500, 500) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
@Override
public void onFinish() {
isWaiting = false;
}
};
ed1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(isWaiting) {
isWaiting = false;
timer.cancel();
// TODO: Pop Up Calculator
Toast.makeText(getApplicationContext(), "Pop", Toast.LENGTH_LONG).show();
} else {
isWaiting = true;
timer.start();
}
}
});
}
source to share