0
我將第二個活動的參數傳遞給第一個活動,但該程序不會輸入第一個活動中的onActivityResult方法,但它不包含任何內容。在BaseAdapter中調用ActivityActiveResult
在我的第一個Acitivity中,我有2個clases。 第一個我做一個查詢和我所說的第二類ListAdapter:
public class view_records extends Activity {
public void getProduct() {
comandSQL = "Select * from Inventario";
try {
Statement statement = MainActivity.connect.createStatement();
rs = statement.executeQuery(comandSQL);
ArrayList<product_model> product_list = new ArrayList<product_model>();
String tidno = "", tdesc = "";
while(rs.next()){
tidno = rs.getString("No_");
tdesc = rs.getString("Descripción Completa");
product_model _ProductModel = new product_model();
_ProductModel.setIdno(tidno);
_ProductModel.setProductDesc(tdesc);
_productlist.add(_ProductModel);
}
listview.setAdapter(new ListAdapter(this));
} catch (Exception e) {
Log.e("ERROR",e.getMessage());
}
} `
在第二類我稱之爲第二活動
private class ListAdapter extends BaseAdapter {
LayoutInflater inflater;
ViewHolder viewHolder;
int request_code = 1;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.modelo_productos, null);
viewHolder = new ViewHolder();
viewHolder.txt_prod = (TextView) convertView.findViewById(R.id.tv_productos);
viewHolder.txt_desc = (TextView) convertView.findViewById(R.id.tv_desc);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.txt_prod.setText(_productlist.get(position).getIdno().trim());
viewHolder.txt_desc.setText(_productlist.get(position).getProductDesc().trim());
final int temp = position;
(convertView.findViewById(R.id.bt_modificar)).setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
modificarProd(temp);
}
});
return convertView;
}
protected void modificarProd(int temp)
{
String pos = Integer.toString(temp);
String _productid = String.valueOf(_productlist.get(temp).getIdno());
String _productdesc = _productlist.get(temp).getProductDesc();
Intent intent = new Intent(getApplicationContext(), modificar_productos.class);
Bundle bundle = new Bundle();
bundle.putString("id", _productid);
bundle.putString("desc", _productdesc);
bundle.putString("pos", pos);
intent.putExtras(bundle);
startActivityForResult(intent, request_code);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (RESULT_OK == request_code){
String result = data.getStringExtra("pos");
_productlist.remove(result);
notifyDataSetChanged();
}
}
}
private class ViewHolder {
TextView txt_desc;
Button btOK;
int position;
}
}
這是第二活動的一部分
public class modificar_productos extends Activity implements OnClickListener {
String pos;
double costo;
Intent i;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.modificar_productos);
i = getIntent();
tvProd = (TextView) findViewById(R.id.tv_prod);
tvDesc = (TextView) findViewById(R.id.tv_desc);
tvProd.setText(i.getExtras().getString("id"));
tvDesc.setText(i.getExtras().getString("desc"));
pos = i.getExtras().getString("pos");
btGuardar = (Button) findViewById(R.id.bt_guardar);
btGuardar.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bt_guardar:
if (etCant.getText().toString().equals("")) {
Toast.makeText(modificar_productos.this, "Por favor, ingrese la cantidad",Toast.LENGTH_LONG).show();
} else {
Intent data = new Intent();
data.putExtra("pos",pos);
setResult(RESULT_OK, data);
finish();
}
break;
}
}
}
嗨!我試過了,但是它不起作用:(我在一些例子中看到這個方法有@override,我無法做到這一點 – user3524791
你不能在ListAdapter類中使用'onActivityResult',它必須被使用在Activity類中使用@Override將'onActivityResult'放入'view_records'活動 – schabluk
It works !!但是...我必須刷新我的適配器,我從ListAdapter類中調用它... – user3524791