La differenza potrebbe stare nel fatto che mentre nell'ArrayAdapter il metodo getView fa tutto lui, nel CursorAdapter la view viene inflatata da newView e poi in essa vengono messi i dati tramite bindView.
Vediamo un po' i parametri dei due metodi.
Sì, credo di essere in grado di provare...
Iniziamo estendendo CursorAdapter.
class MyCursorAdapter extends CursorAdapter {
Context context;
public MyCursorAdapter(Context context, Cursor c) {
super(context, c);
this.context=context;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);
return layoutInflater.inflate(R.layout.row,null);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView textView=(TextView)view.findViewById(R.id.textView);
Button button=(Button)view.findViewById(R.id.button2);
textView.setText(cursor.getString(cursor.getColumnIndexOrThrow("voce")));
}
}
E l'ho sperimentato: ecco tutto il codice:
public class Lista extends AppCompatActivity {
Helper helper;
MyCursorAdapter myCursorAdapter;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista);
helper=new Helper(this);
Cursor crs=helper.query();
myCursorAdapter=new MyCursorAdapter(this,crs);
listView=(ListView)findViewById(R.id.listView);
listView.setAdapter(myCursorAdapter);
}
@Override
protected void onStop(){
super.onStop();
Intent intent=new Intent(Lista.this,Lista.class);
PendingIntent pendingIntent=PendingIntent.getActivity(getApplicationContext(),0,intent,0);
AlarmManager alarmManager=(AlarmManager) getApplicationContext().getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+5*1000,pendingIntent);
}
class MyCursorAdapter extends CursorAdapter {
Context context;
public MyCursorAdapter(Context context, Cursor c) {
super(context, c);
this.context=context;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);
return layoutInflater.inflate(R.layout.row,null);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView textView=(TextView)view.findViewById(R.id.textView);
Button button=(Button)view.findViewById(R.id.button2);
textView.setText(cursor.getString(cursor.getColumnIndexOrThrow("voce")));
}
}
}
Funziona perfettamente!
Nessun commento:
Posta un commento