我将这些按钮添加到我的TableL中,就像这样
TableLayout table = (TableLayout) findViewById( R.id.tableLayout1 );
Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+ myPrefLocalMedia + mat_foto);
final ImageButton b = new ImageButton(this);
b.setScaleType(ImageView.ScaleType.FIT_CENTER);
b.setAdjustViewBounds(true);
b.setImageBitmap(bmp);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ProgressDialog progressDialog = new ProgressDialog(SuperlineaActivity.this);
progressDialog.setMessage("Realizando el pedido...");
progressDialog.setCancelable(false);
b.setPressed(true);
if ( (miPedido == null) || ( miPedido.isEnproceso()==false) ) {
Log.e("log_","Hago post! Creo pedido!!");
Hacerpost eginpost = new Hacerpost(SuperlineaActivity.this, progressDialog);
eginpost.execute(myPrefApiPeticionMaterial,mat_id, PUESTOID, LINEAID, USUARIOID, PRODUCTOID);
} else {
Hacerput puttask = new Hacerput(SuperlineaActivity.this, progressDialog);
puttask.execute(myPrefApiPeticionMaterial,miPedido.getId());
}
}
});
row.addView( b, 300,300 );
按下它时会执行一些AsyncTask(HttpPost)并返回一个颜色代码。我需要用那个颜色代码更改按下的背景颜色,但我怎么知道我点击的女巫按钮?
这是我收到HttpPost数据的函数:
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void erantzuna(JSONObject myJson) {
if ( miPedido == null ) {
AlertDialog alerta = new AlertDialog.Builder(SuperlineaActivity.this).create();
alerta.setTitle("PEDIDO EN PROCESO");
alerta.setMessage("El pedido se a procesado. Espera.");
alerta.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Registrado", Toast.LENGTH_SHORT).show();
}
});
alerta.show();
String kolorea = null;
String pedidoid = null;
try {
kolorea = myJson.getString("kolorea");
pedidoid = myJson.getString("pedidoid");
} catch (JSONException e) {
e.printStackTrace();
}
Log.e("log_", "Bueltan da: => " + kolorea);
Log.e("log_", "Bueltan da: => " + pedidoid);
miPedido = new Pedido(pedidoid, kolorea);
try {
if (miPedido.getKolorea().equals("kuadro-gorria")) {
//
// Here I need to change the pressed ImageButton color to RED
//
} elseif ( miPedido.getKolorea().equals("kuadro-urdina")) {
//
// Here I need to change the pressed ImageButton color to BLUE
//
} else {
//
// Here I need to change the pressed ImageButton color to transparent
//
}
} catch (Exception e) {
Log.e("log_","Boton Color => " + e.toString());
}
} else {
miPedido = null;
}
}
任何帮助或线索? 提前致谢
答案 0 :(得分:0)
也许您应该管理动态添加的按钮,比如将它们放入列表中,或者,如果您以后不需要它们的引用,只需将Button提供给asyncTask(就像在构造函数中一样)并更改它在asynctask的onPostExecute方法中的颜色。但是不要忘记准备在任务等待响应时Activity被销毁的情况,因为在这种情况下Button将不再存在,这也可能导致内存泄漏。