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