· 9 years ago · Dec 27, 2016, 10:24 PM
1import android.content.Context;
2import android.database.sqlite.SQLiteDatabase;
3import android.os.Bundle;
4import android.support.design.widget.FloatingActionButton;
5import android.support.v7.app.AppCompatActivity;
6import android.support.v7.widget.Toolbar;
7import android.view.Menu;
8import android.view.MenuItem;
9import android.view.View;
10import android.widget.ArrayAdapter;
11import android.widget.EditText;
12import android.widget.ListView;
13
14import java.util.ArrayList;
15import java.util.List;
16
17public class MainActivity extends AppCompatActivity {
18
19 SQLiteDatabase db;
20 private Context ctx;
21 private List<personas> listaProducto;
22 private EditText edNombre, edDescripcion;
23 ArrayAdapter<personas> adapter;
24
25 @Override
26 protected void onCreate(Bundle savedInstanceState) {
27 super.onCreate(savedInstanceState);
28 setContentView(R.layout.activity_main);
29
30 ctx=this;
31
32 addView();
33
34 //Abroo la base de datos 'BDPersonas' en modo escritura
35 BDPersonas personas =
36 new BDPersonas(this, "BDPersonas", null, 2);
37
38 db = personas.getWritableDatabase();
39
40 //Compruebo que la BD se abre correctamente
41 if(db != null)
42 {
43
44 for(int i=1; i<=10; i++)
45 {
46 //Generar valores
47 int codigo = i;
48 String nombrePersona = "Persona" + i;
49
50 //Datos de prueba
51 db.execSQL("INSERT INTO Personas (nombre) " +
52 "VALUES ('" + nombrePersona + "')");
53 }
54
55 //Cerrar BD
56 //db.close();
57 }
58
59 }
60
61
62 private void addView() {
63 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
64 setSupportActionBar(toolbar);
65
66
67 edDescripcion =(EditText) findViewById(R.id.edDescripcionProducto);
68 edNombre =(EditText) findViewById(R.id.edNombreProducto);
69
70 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
71 fab.setOnClickListener(new View.OnClickListener() {
72 @Override
73 public void onClick(View view) {
74
75
76 listaProducto.add(get(edNombre.getText().toString(), edDescripcion.getText().toString(), R.drawable.add_sinfoto));
77 adapter.notifyDataSetChanged();
78 edNombre.getText().clear();
79 edDescripcion.getText().clear();
80
81
82
83 }
84 });
85
86 // create an array of Strings, that will be put to our ListActivity
87 ListView listaView=(ListView) findViewById(R.id.listView);
88 adapter = new ListaAdapter(MainActivity.this, getListaProductos());
89 listaView.setAdapter(adapter);
90 listaView.refreshDrawableState();
91
92 }
93
94
95 private List<personas> getListaProductos(){
96 listaProducto= new ArrayList<personas>();
97 String [] titulos;
98 String [] descripciones;
99 titulos= ctx.getResources().getStringArray(R.array.titulos);
100 descripciones= ctx.getResources().getStringArray(R.array.descripciones);
101
102
103
104
105 int [] imagenes= new int[]{
106
107
108 };
109
110
111
112
113
114
115
116 for (int i=0; i<imagenes.length; i++){
117 listaProducto.add(get(titulos[i],descripciones[i],imagenes[i]));
118
119 }
120 //listaProducto.get(0).setSelected(true);
121
122 return listaProducto;
123 }
124
125
126 private personas get(String titulo, String descripcion, int imagen ) {
127 return new personas(titulo, descripcion, imagen);
128 }
129
130
131
132
133
134 @Override
135 public boolean onCreateOptionsMenu(Menu menu) {
136 // Inflate the menu; this adds items to the action bar if it is present.
137 getMenuInflater().inflate(R.menu.menu_main, menu);
138 return true;
139 }
140
141 @Override
142 public boolean onOptionsItemSelected(MenuItem item) {
143 // Handle action bar item clicks here. The action bar will
144 // automatically handle clicks on the Home/Up button, so long
145 // as you specify a parent activity in AndroidManifest.xml.
146 int id = item.getItemId();
147
148
149 switch (id){
150
151
152
153
154 case R.id.menu_borrar:
155
156 for (int i=listaProducto.size()-1; i>=0; i--){
157 if(listaProducto.get(i).isSelected()){
158 listaProducto.remove(i);
159
160 }
161 }
162 adapter.notifyDataSetChanged();
163
164
165
166
167 break;
168 default:
169 break;
170
171 }
172
173
174 return super.onOptionsItemSelected(item);
175 }
176
177
178
179}
180
181import android.content.Context;
182import android.database.sqlite.SQLiteDatabase;
183import android.database.sqlite.SQLiteOpenHelper;
184
185public class BDPersonas extends SQLiteOpenHelper {
186
187 String sqlCreate = "CREATE TABLE Personas (codigo INTEGER, nombre TEXT)";
188 String sqlCreate2 = "CREATE TABLE Personas (codigo INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT, direccion TEXT)";
189
190 public BDPersonas(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
191 super(context, name, factory, version);
192 }
193
194 @Override
195 public void onCreate(SQLiteDatabase db) {
196 // Si no existe la base de datos la crea y ejecuta los siguientes comandos
197 db.execSQL(sqlCreate);
198
199
200
201
202 }
203
204 @Override
205 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
206
207 //Se elimina la versión anterior de la tabla
208 db.execSQL("DROP TABLE IF EXISTS Personas");
209
210 //Se crea la nueva versión de la tabla
211 db.execSQL(sqlCreate2);
212
213 }
214
215public class personas {
216
217 private String titulo;
218 private String descripcion;
219 private int id_imagen;
220 private boolean selected;
221
222
223 public personas(String titulo, String descripcion, int id_imagen) {
224 this.titulo = titulo;
225 this.descripcion = descripcion;
226 this.id_imagen = id_imagen;
227 this.selected = false;
228 }
229
230
231 public String getTitulo() {
232 return titulo;
233 }
234
235 public void setTitulo(String titulo) {
236 this.titulo = titulo;
237 }
238
239 public String getDescripcion() {
240 return descripcion;
241 }
242
243 public void setDescripcion(String descripcion) {
244 this.descripcion = descripcion;
245 }
246
247 public int getId_imagen() {
248 return id_imagen;
249 }
250
251 public void setId_imagen(int id_imagen) {
252 this.id_imagen = id_imagen;
253 }
254
255 public boolean isSelected() {
256 return selected;
257 }
258
259 public void setSelected(boolean selected) {
260 this.selected = selected;
261 }
262}
263
264public class ListaAdapter extends ArrayAdapter<personas> {
265
266 private final List<personas> list;
267 private final Context context;
268
269 public ListaAdapter(Context context, List<personas> list) {
270 super(context, R.layout.list_fila, list);
271 this.context = context;
272 this.list = list;
273 }
274
275
276 static class ViewHolder {//Un miembro protegido es accesible dentro de su clase y por instancias de clases derivadas.
277 protected ImageView imageview_alimento;
278 protected TextView tvTitulo;
279 protected TextView tvDescripcion;
280 protected CheckBox checkbox;
281
282
283 }
284
285
286 @Override
287 public View getView(int position, View convertView, ViewGroup parent) {
288 View view = null;
289 if (convertView == null) {
290 LayoutInflater inflator =LayoutInflater.from(context);// Activity.getLayoutInflater();
291 view = inflator.inflate(R.layout.list_fila, null);// java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
292 final ViewHolder viewHolder = new ViewHolder();
293 viewHolder.tvTitulo = (TextView) view.findViewById(R.id.tvTitulo);
294 viewHolder.tvDescripcion = (TextView) view.findViewById(R.id.tvDescripcion);
295 viewHolder.imageview_alimento = (ImageView) view.findViewById(R.id.ImagView_Producto);
296 viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
297
298 viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
299
300 @Override //checkbox , activado:true-false
301 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
302 personas element = (personas) viewHolder.checkbox.getTag();
303 element.setSelected(buttonView.isChecked());
304
305 }
306 });
307
308 view.setTag(viewHolder);
309 viewHolder.checkbox.setTag(list.get(position));
310 } else {
311 view = convertView;
312 ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
313
314 }
315 ViewHolder holder = (ViewHolder) view.getTag();
316
317 holder.tvTitulo.setText(list.get(position).getTitulo());
318 holder.tvDescripcion.setText(list.get(position).getDescripcion());
319 holder.imageview_alimento.setImageResource(list.get(position).getId_imagen());
320
321 holder.checkbox.setChecked(list.get(position).isSelected());
322 return view;
323 }
324
325
326 @Override
327 public int getCount() {
328 return super.getCount();
329 }
330
331 @Override
332 public personas getItem(int position) {
333 return super.getItem(position);
334 }
335
336}
337
338<?xml version="1.0" encoding="utf-8"?>
339<LinearLayout
340 xmlns:android="http://schemas.android.com/apk/res/android"
341 xmlns:tools="http://schemas.android.com/tools"
342 xmlns:app="http://schemas.android.com/apk/res-auto"
343 android:id="@+id/content_main"
344 android:layout_width="match_parent"
345 android:layout_height="match_parent"
346 android:paddingLeft="@dimen/activity_horizontal_margin"
347 android:paddingRight="@dimen/activity_horizontal_margin"
348 android:paddingTop="@dimen/activity_vertical_margin"
349 android:paddingBottom="@dimen/activity_vertical_margin"
350 app:layout_behavior="@string/appbar_scrolling_view_behavior"
351 tools:showIn="@layout/activity_main"
352 tools:context="prueba.birthday.MainActivity"
353 android:orientation="vertical">
354
355 <EditText
356 android:layout_width="match_parent"
357 android:layout_height="wrap_content"
358 android:inputType="textMultiLine"
359 android:ems="10"
360 android:layout_marginTop="12dp"
361 android:id="@+id/edNombreProducto"
362 android:layout_alignParentTop="true"
363 android:layout_alignParentEnd="true"
364 android:layout_marginEnd="66dp"
365 android:hint="Nombre" />
366
367 <EditText
368 android:layout_width="match_parent"
369 android:layout_height="wrap_content"
370 android:inputType="textMultiLine"
371 android:ems="10"
372 android:id="@+id/edDescripcionProducto"
373 android:hint="16/09/1993" />
374
375 <ListView
376 android:layout_width="match_parent"
377 android:layout_height="match_parent"
378 android:id="@+id/listView" />
379</LinearLayout>
380
381<?xml version="1.0" encoding="utf-8"?>
382<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
383 android:layout_width="match_parent"
384 android:layout_height="?android:attr/listPreferredItemHeight" >
385
386
387 <LinearLayout
388 android:layout_width="match_parent"
389 android:layout_height="wrap_content"
390 android:orientation="vertical"
391 android:background="#3F51B5"
392 android:layout_alignParentTop="true"
393 android:layout_alignParentStart="true">
394
395
396 <LinearLayout
397 android:orientation="horizontal"
398 android:layout_width="match_parent"
399 android:layout_height="wrap_content">
400
401 <ImageView
402 android:id="@+id/ImagView_Producto"
403
404 android:background="#3F51B5"
405 android:layout_height="90dp"
406 android:layout_width="90dp" />
407
408 <LinearLayout
409 android:orientation="vertical"
410 android:layout_width="match_parent"
411 android:layout_height="match_parent">
412
413 <LinearLayout
414 android:orientation="horizontal"
415 android:layout_width="match_parent"
416 android:layout_height="wrap_content">
417
418 <TextView
419 android:id="@+id/tvTitulo"
420 android:layout_height="wrap_content"
421 android:text="Nombre"
422 android:textColor="@android:color/background_light"
423 android:textAppearance="?android:attr/textAppearanceLarge"
424 android:layout_gravity="center_horizontal"
425 android:layout_weight="1"
426 android:layout_width="255dp" />
427
428 <CheckBox
429 android:id="@+id/check"
430 android:layout_alignParentRight="true"
431 android:layout_gravity="right"
432 android:layout_height="30dp"
433 android:layout_width="30dp"
434 android:layout_weight="1" />
435 </LinearLayout>
436
437 <TextView
438 android:id="@+id/tvDescripcion"
439 android:layout_width="match_parent"
440 android:layout_height="wrap_content"
441 android:textColor="@android:color/background_light"
442 android:textAppearance="?android:attr/textAppearanceLarge"
443 android:text="Fecha"
444 android:layout_gravity="center_horizontal"
445 android:layout_weight="1" />
446 </LinearLayout>
447
448
449
450 </LinearLayout>
451
452
453 </LinearLayout>
454
455</RelativeLayout>