Buenas,
Mi problema es que estoy muy verde en esto de android y no se muy bien como hacer lo siguiente, tengo un listview con un adapter, pero quiero convertirlo en un cursoradapter para usarlo con base datos, he mirado muchos ejemplo y no queda nada claro como usarlo, me podrían indicar que he de hacer ahora, les adjunto el código de listview, así como el código que tengo hasta ahora, si necesitan alguna información sólo han de pedirla. Muchas gracias de antemano
Código de listview con adapter
- Código: Seleccionar todo
public class TravelActivity extends ListActivity {
private TravelAdapter adapter;
private class TravelAdapter extends ArrayAdapter{
private Context context;
private ArrayListtravels;
private static final int RESOURCE = android.R.layout.simple_list_item_2;
public TravelAdapter(Context context, ArrayListtravels) {
super(context, RESOURCE, travels);
this.context = context;
this.travels = travels;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout view;
ViewHolder holder;
if (convertView == null){
view = new LinearLayout(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(RESOURCE, view, true);
holder = new ViewHolder();
holder.text1 = (TextView) view.findViewById(android.R.id.text1);
holder.text2 = (TextView) view.findViewById(android.R.id.text2);
view.setTag(holder);
} else {
view = (LinearLayout) convertView;
holder = (ViewHolder) view.getTag();
}
//Rellenamos la vista con los datos
TravelInfo info = travels.get(position);
holder.text1.setText(info.getCity() + " (" + info.getCountry() + ")");
holder.text2.setText(getResources().getString(R.string.ano) + " " + info.getYear());
return view;
}
}
static class ViewHolder {
TextView text1;
TextView text2;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Generamos los datos
ArrayListvalues = getData();
//Creamos el adapter y lo asociamos a la activity
adapter = new TravelAdapter(this, values);
setListAdapter(adapter);
}
Código con cursor adapter
- Código: Seleccionar todo
public class TravelListActivity extends ListActivity {
private class TravelAdapter extends CursorAdapter{
private static final int layout = android.R.layout.simple_list_item_2;
String[] items = {"ID"};
static final String from = Travels._ID;
static final int to = R.id.list_viajes;
TextView tipo, fases, duracion;
private final Context context;
public TravelAdapter(Context context,Cursor c) {
super.TravelAdapter(context, layout, c, from, to);
// TODO Auto-generated constructor stub
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(android.R.layout.simple_list_item_2, parent, false);
ViewHolder holder = new ViewHolder();
holder.text1 = (TextView) v.findViewById(android.R.id.text1);
holder.text2 = (TextView) v.findViewById(android.R.id.text2);
v.setTag(holder);
return v;
}
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder)view.getTag();
holder.text1.setText(cursor.getColumnIndex(Travels.CITY) + " (" + cursor.getColumnIndex(Travels.COUNTRY) + ")");
holder.text2.setText(getResources().getString(R.string.year) + " " + cursor.getColumnIndex(Travels.YEAR));
}
public View getView(int position, View convertView, ViewGroup parent) {
if (!mDataValid) {
throw new IllegalStateException("this should only be called when the cursor is valid");
}
if (!mCursor.moveToPosition(position)) {
throw new IllegalStateException("couldn't move cursor to position " + position);
}
View v;
if (convertView == null) {
v = newView(mContext, mCursor, parent);
} else {
v = convertView;
}
bindView(v, mContext, mCursor);
return v;
}
}
static class ViewHolder {
TextView text1;
TextView text2;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Cursor Cursor = this.managedQuery(TravelsProvider.CONTENT_URI, null, null, null, null);
this.setListAdapter(new TravelAdapter(this,Cursor));
initialData();
registerForContextMenu(getListView());
}