DetestedMarce
26/10/15, 21:06:14
Hola chicos, me gustaría, en el caso de que se pudiera que me solventarais una duda
Estoy creando una app para clase, donde debemos añadir, borrar y editar productos para hacer la compra. Si lo hemos comprado, deberá salir en verde, y sino deberá salir en rojo y tachado.
Los procesos de elminar, editar y añadir me los hace, pero el problema se produce en que no tengo idea de como hacer lo de los colores, he intentado diferentes metodos buscando por internet pero no hay manera
El codigo es el siguiente
public class MainActivity extends Activity {
EditText producto;
ListView lv;
ArrayAdapter<String> adapter;
ArrayList<String> arrayList;
EditText editarP;
boolean comprado=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.listView);
arrayList= new ArrayList<String>();
adapter=new ArrayAdapter<String>(this,R.layout.letra,arrayList);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> lst, View vistafila, int posicion, long id) {
Toast.makeText(getApplicationContext(),"Comprar: "+
lv.getItemAtPosition(posicion).toString(),Toast.LE NGTH_SHORT).show();
}
});
registerForContextMenu(lv);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();
switch (id){
case R.id.anyadir:
//ALERTA DIALOGOS
AlertDialog.Builder alert = new AlertDialog.Builder(this);
final Context context = this.getApplicationContext();
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
alert.setTitle("Añadir producto");
final TextView tv1 = new TextView(context);
producto = new EditText(context);
producto.setTextColor(Color.parseColor("#000000"));
tv1.setTextColor(Color.parseColor("#000000"));
tv1.setText("Aqui puede introducir un producto a su lista de la compra");
layout.addView(tv1);
layout.addView(producto);
alert.setView(layout);
alert.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
arrayList.add(producto.getText().toString());
adapter.notifyDataSetChanged();
}
});
alert.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(getApplicationContext(), "Producto cancelado",Toast.LENGTH_SHORT).show();
}
});
alert.show();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
// Creamos el objeto que debe inflar la vista del menú en la pantalla.
MenuInflater inflater = new MenuInflater(this);
switch (v.getId()) {
case R.id.listView:
inflater.inflate(R.menu.menu_lista, menu);
break;
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
final int position = ((AdapterView.AdapterContextMenuInfo) item.getMenuInfo()).position;
switch (item.getItemId()) {
case R.id.Editar:
Toast.makeText(getApplicationContext(),"Editar: "+
lv.getItemAtPosition(position).toString(),Toast.LE NGTH_SHORT).show();
AlertDialog.Builder alert = new AlertDialog.Builder(this);
final Context context = this.getApplicationContext();
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
alert.setTitle("Editar producto");
final TextView tv1 = new TextView(context);
editarP = new EditText(context);
editarP.setTextColor(Color.parseColor("#000000"));
tv1.setTextColor(Color.parseColor("#000000"));
tv1.setText("Editar el producto");
layout.addView(tv1);
layout.addView(editarP);
alert.setView(layout);
alert.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
arrayList.remove(position);
arrayList.add(position,editarP.getText().toString( ));
adapter.notifyDataSetChanged();
}
});
alert.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(getApplicationContext(), "Producto no editado",Toast.LENGTH_SHORT).show();
}
});
alert.show();
break;
case R.id.Eliminar:
arrayList.remove(position);
adapter.notifyDataSetChanged();
break;
default:
return super.onContextItemSelected(item);
}
return true;
}
}
Algunos de mis compañeros lo han hecho haciendo adaptadores externos para los elementos de la lista, pero yo he preguntado y por lo visto también se puede hacer sin adaptadores, en caso de que no pueda, lo tendré que cambiar a como lo han hecho ellos.
Un saludo y gracias
Estoy creando una app para clase, donde debemos añadir, borrar y editar productos para hacer la compra. Si lo hemos comprado, deberá salir en verde, y sino deberá salir en rojo y tachado.
Los procesos de elminar, editar y añadir me los hace, pero el problema se produce en que no tengo idea de como hacer lo de los colores, he intentado diferentes metodos buscando por internet pero no hay manera
El codigo es el siguiente
public class MainActivity extends Activity {
EditText producto;
ListView lv;
ArrayAdapter<String> adapter;
ArrayList<String> arrayList;
EditText editarP;
boolean comprado=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.listView);
arrayList= new ArrayList<String>();
adapter=new ArrayAdapter<String>(this,R.layout.letra,arrayList);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> lst, View vistafila, int posicion, long id) {
Toast.makeText(getApplicationContext(),"Comprar: "+
lv.getItemAtPosition(posicion).toString(),Toast.LE NGTH_SHORT).show();
}
});
registerForContextMenu(lv);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();
switch (id){
case R.id.anyadir:
//ALERTA DIALOGOS
AlertDialog.Builder alert = new AlertDialog.Builder(this);
final Context context = this.getApplicationContext();
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
alert.setTitle("Añadir producto");
final TextView tv1 = new TextView(context);
producto = new EditText(context);
producto.setTextColor(Color.parseColor("#000000"));
tv1.setTextColor(Color.parseColor("#000000"));
tv1.setText("Aqui puede introducir un producto a su lista de la compra");
layout.addView(tv1);
layout.addView(producto);
alert.setView(layout);
alert.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
arrayList.add(producto.getText().toString());
adapter.notifyDataSetChanged();
}
});
alert.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(getApplicationContext(), "Producto cancelado",Toast.LENGTH_SHORT).show();
}
});
alert.show();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
// Creamos el objeto que debe inflar la vista del menú en la pantalla.
MenuInflater inflater = new MenuInflater(this);
switch (v.getId()) {
case R.id.listView:
inflater.inflate(R.menu.menu_lista, menu);
break;
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
final int position = ((AdapterView.AdapterContextMenuInfo) item.getMenuInfo()).position;
switch (item.getItemId()) {
case R.id.Editar:
Toast.makeText(getApplicationContext(),"Editar: "+
lv.getItemAtPosition(position).toString(),Toast.LE NGTH_SHORT).show();
AlertDialog.Builder alert = new AlertDialog.Builder(this);
final Context context = this.getApplicationContext();
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
alert.setTitle("Editar producto");
final TextView tv1 = new TextView(context);
editarP = new EditText(context);
editarP.setTextColor(Color.parseColor("#000000"));
tv1.setTextColor(Color.parseColor("#000000"));
tv1.setText("Editar el producto");
layout.addView(tv1);
layout.addView(editarP);
alert.setView(layout);
alert.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
arrayList.remove(position);
arrayList.add(position,editarP.getText().toString( ));
adapter.notifyDataSetChanged();
}
});
alert.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(getApplicationContext(), "Producto no editado",Toast.LENGTH_SHORT).show();
}
});
alert.show();
break;
case R.id.Eliminar:
arrayList.remove(position);
adapter.notifyDataSetChanged();
break;
default:
return super.onContextItemSelected(item);
}
return true;
}
}
Algunos de mis compañeros lo han hecho haciendo adaptadores externos para los elementos de la lista, pero yo he preguntado y por lo visto también se puede hacer sin adaptadores, en caso de que no pueda, lo tendré que cambiar a como lo han hecho ellos.
Un saludo y gracias