我在更新列表视图时遇到问题,按“确定”按钮,修改数据库中的注册表,但不会反映在列表视图中输入的值。
附上活动和班级适配器。
任何帮助都会受到赞赏,因为我已经搜索过但没有找到它。
感谢 卡洛斯
EditText edt3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pedidos);
pbr2 = (ProgressBar) findViewById(R.id.progressBar2);
listap = (ListView) findViewById(R.id.listview2);
spinnerFam = (Spinner) findViewById(R.id.spinner2);
connectionClass = new ConnectionClass();
helper = new DBHelper(this);
db = helper.getWritableDatabase();
gruposAdapter = new GruposAdapter(this,android.R.layout.simple_spinner_dropdown_item,helper.recuperarGrupos());
gruposAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerFam.setAdapter(gruposAdapter);
spinnerFam.setOnItemSelectedListener(this);
productosList = helper.recuperarProductos();
productosAdapter = new ProductosAdapter(this,productosList);
listap.setAdapter(productosAdapter);
listap.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Productos productos = productosAdapter.getItem(i);
final String idprod = productos.getCodigo();
LayoutInflater inflater = getLayoutInflater();
final View dialoglayout = inflater.inflate(R.layout.dialog,null);
final EditText etcant = (EditText) dialoglayout.findViewById(R.id.editText4);
final TextView tvcant = (TextView) dialoglayout.findViewById(R.id.textView15);
tvcant.setText(productos.getDescripcion());
etcant.setText(String.valueOf(productos.getCantidad()));
etcant.setSelectAllOnFocus(true);
AlertDialog.Builder builder = new AlertDialog.Builder(Pedidos.this);
builder.setView(dialoglayout);
builder.setPositiveButton("Aceptar", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Integer cantidad = Integer.valueOf(etcant.getText().toString());
helper.actualizarCantProd(idprod,cantidad);
}
});
builder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.show();
productosAdapter.notifyDataSetChanged();
// Toast.makeText(Pedidos.this, codspinini, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
Grupos grupos = gruposAdapter.getItem(position);
productosAdapter.getFilter().filter(Long.toString(grupos.getCodGrup()), new Filter.FilterListener() {
@Override
public void onFilterComplete(int i) {
}
});
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
}
public class ProductosAdapter extends BaseAdapter implements Filterable {
private LayoutInflater pLayoutInflater;
private List<Productos> productosList;
private List<Productos> productosFilterList;
private ProductosFilter productosFilter;
private Context context;
public ProductosAdapter(Context context, List data){
productosList = data;
productosFilterList = data;
pLayoutInflater = LayoutInflater.from(context);
this.context = context;
}
@Override
public int getCount() {
return productosList.size();
}
@Override
public Productos getItem(int i) {
return productosList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View updateViewp;
final ViewHoler viewHoler;
if (view == null){
updateViewp = pLayoutInflater.inflate(R.layout.productodetalle, null);
viewHoler = new ViewHoler();
viewHoler.cantidad = (TextView) updateViewp.findViewById(R.id.textView14);
viewHoler.codigo = (TextView) updateViewp.findViewById(R.id.textView11);
viewHoler.descripcion = (TextView) updateViewp.findViewById(R.id.textView12);
viewHoler.precio = (TextView) updateViewp.findViewById(R.id.textView13);
updateViewp.setTag(viewHoler);
} else {
updateViewp = view;
viewHoler = (ViewHoler) updateViewp.getTag();
}
final Productos item = getItem(i);
viewHoler.cantidad.setText(String.valueOf(item.getCantidad()));
viewHoler.codigo.setText(item.getCodigo());
viewHoler.precio.setText(String.valueOf(item.getPrecioNeto()));
viewHoler.descripcion.setText(item.getDescripcion());
return updateViewp;
}
@Override
public Filter getFilter() {
if (productosFilter == null){
productosFilter = new ProductosFilter();
}
return productosFilter;
}
static class ViewHoler {
TextView cantidad;
TextView descripcion;
TextView codigo;
TextView precio;
}
private class ProductosFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
long codGrupId = Long.parseLong(charSequence.toString());
FilterResults results = new FilterResults();
if (codGrupId > 0) {
ArrayList<Productos> filterListp = new ArrayList<Productos>();
for (int i = 0; i < productosFilterList.size(); i ++) {
if ((productosFilterList.get(i).getCodgrupo()) == codGrupId){
Productos productos = productosFilterList.get(i);
filterListp.add(productos);
}
}
results.count = filterListp.size();
results.values = filterListp;
} else {
results.count = productosFilterList.size();
results.values = productosFilterList;
}
return results;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
productosList = (ArrayList<Productos>)filterResults.values;
notifyDataSetChanged();
}
}
}
答案 0 :(得分:0)
可能你应该在对话框的正面按钮onclick listener中通知notifyDataSetChange,如下所示:
builder.setPositiveButton("Aceptar", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Integer cantidad = Integer.valueOf(etcant.getText().toString());
helper.actualizarCantProd(idprod,cantidad);
productosAdapter.notifyDataSetChanged();
}
});