kohario88
13/05/15, 13:26:01
Buenos dias.
Estoy teniendo un problema a la hora de cargar una list view personalizada desde una bd de sqlite. La bd esta bien creada y me permite introducir peliculas. El problema viene al mostrarlas. Igual es que he puesto algo mal. Os agradeceria si pudierais indicarme el que. Os paso Los metodos que conlleva:
Clase TodasPelis
public class TodasPelis extends ActionBarActivity {
private ListView lista;
private ArrayList<ControlItems> Items;
private AdaptadorLista Adaptador;
override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listapersonalizada);
lista = (ListView)findViewById(R.id.lista);
loadItems();
}
override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_todas_pelis, menu);
return true;
}
override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void loadItems() {
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
Cursor fila = bd.rawQuery(
"select Titulo,Nota from Peliculas", null);
if (fila.moveToFirst()){
Items = new ArrayList<ControlItems>();
{
Items.add(new ControlItems(fila.getString(0), fila.getInt(1)));
lista.setAdapter(Adaptador);
while (fila.moveToNext()) {
Items.add(new ControlItems(fila.getString(0), fila.getInt(1)));
}
Adaptador = new AdaptadorLista(this, Items);
}
} else
Toast.makeText(this, "No hay peliculas",
Toast.LENGTH_SHORT).show();
bd.close();
Adaptador = new AdaptadorLista(this, Items);
lista.setAdapter(Adaptador);
}
}
ControlItems
public class ControlItems {
String title;
RatingBar star;
public ControlItems(){}
public ControlItems(String titulo, int stars){
this.title = titulo;
this.star.setNumStars(stars);
}
// Aqui inicia el GET y el SET para cada propiedad de la clase
public String getTitle() { return title; }
public void setTitle(String titulo) { this.title = titulo; }
public int getStar(){ return star.getNumStars(); }
public void setStar(int stars){ this.star.setNumStars(stars);}
}
Adaptador Lista
public class AdaptadorLista extends BaseAdapter{
private Activity activity;
private ArrayList<ControlItems> arrayItems;
public AdaptadorLista(Activity activity, ArrayList<ControlItems> listaItems){
super();
this.activity = activity;
this.arrayItems = new ArrayList<ControlItems>(listaItems);
}
override
public int getCount() {
return arrayItems.size();
}
override
public Object getItem(int position) {
return arrayItems.get(position);
}
override
public long getItemId(int position) {
return position;
}
public static class Fila
{
TextView titulo;
RatingBar estrella;
}
override
public View getView(int position, View convertView, ViewGroup parent) {
Fila view = new Fila();
LayoutInflater inflator = activity.getLayoutInflater();
ControlItems itm = arrayItems.get(position);
if(convertView==null)
{
convertView = inflator.inflate(R.layout.item, parent, false);
view.titulo = (TextView) convertView.findViewById(R.id.Titulo);
view.estrella=(RatingBar) convertView.findViewById(R.id.Estrella);
convertView.setTag(view);
}
else
{
view = (Fila)convertView.getTag();
}
view.titulo.setText(itm.getTitle());
view.estrella.setNumStars(itm.getStar());
return convertView;
}
}
Estoy teniendo un problema a la hora de cargar una list view personalizada desde una bd de sqlite. La bd esta bien creada y me permite introducir peliculas. El problema viene al mostrarlas. Igual es que he puesto algo mal. Os agradeceria si pudierais indicarme el que. Os paso Los metodos que conlleva:
Clase TodasPelis
public class TodasPelis extends ActionBarActivity {
private ListView lista;
private ArrayList<ControlItems> Items;
private AdaptadorLista Adaptador;
override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listapersonalizada);
lista = (ListView)findViewById(R.id.lista);
loadItems();
}
override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_todas_pelis, menu);
return true;
}
override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void loadItems() {
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd = admin.getWritableDatabase();
Cursor fila = bd.rawQuery(
"select Titulo,Nota from Peliculas", null);
if (fila.moveToFirst()){
Items = new ArrayList<ControlItems>();
{
Items.add(new ControlItems(fila.getString(0), fila.getInt(1)));
lista.setAdapter(Adaptador);
while (fila.moveToNext()) {
Items.add(new ControlItems(fila.getString(0), fila.getInt(1)));
}
Adaptador = new AdaptadorLista(this, Items);
}
} else
Toast.makeText(this, "No hay peliculas",
Toast.LENGTH_SHORT).show();
bd.close();
Adaptador = new AdaptadorLista(this, Items);
lista.setAdapter(Adaptador);
}
}
ControlItems
public class ControlItems {
String title;
RatingBar star;
public ControlItems(){}
public ControlItems(String titulo, int stars){
this.title = titulo;
this.star.setNumStars(stars);
}
// Aqui inicia el GET y el SET para cada propiedad de la clase
public String getTitle() { return title; }
public void setTitle(String titulo) { this.title = titulo; }
public int getStar(){ return star.getNumStars(); }
public void setStar(int stars){ this.star.setNumStars(stars);}
}
Adaptador Lista
public class AdaptadorLista extends BaseAdapter{
private Activity activity;
private ArrayList<ControlItems> arrayItems;
public AdaptadorLista(Activity activity, ArrayList<ControlItems> listaItems){
super();
this.activity = activity;
this.arrayItems = new ArrayList<ControlItems>(listaItems);
}
override
public int getCount() {
return arrayItems.size();
}
override
public Object getItem(int position) {
return arrayItems.get(position);
}
override
public long getItemId(int position) {
return position;
}
public static class Fila
{
TextView titulo;
RatingBar estrella;
}
override
public View getView(int position, View convertView, ViewGroup parent) {
Fila view = new Fila();
LayoutInflater inflator = activity.getLayoutInflater();
ControlItems itm = arrayItems.get(position);
if(convertView==null)
{
convertView = inflator.inflate(R.layout.item, parent, false);
view.titulo = (TextView) convertView.findViewById(R.id.Titulo);
view.estrella=(RatingBar) convertView.findViewById(R.id.Estrella);
convertView.setTag(view);
}
else
{
view = (Fila)convertView.getTag();
}
view.titulo.setText(itm.getTitle());
view.estrella.setNumStars(itm.getStar());
return convertView;
}
}