Question

I am developing for android using android annotations but I don't unterstand how to use it with CursorAdapters.

There is already a example for BaseAdapters, but if I add @EBean to a class that extents CursorAdapter I get the error message "@EBean annotated element should have a constructor with one parameter max, of type android.content.Context". CursorAdapter already has two constructors.

public class SongInfoAdapter extends CursorAdapter {
...
@Override
public void bindView(View view, Context context, Cursor cursor) {
 ...
 rowData.id.setOnClickListener(new OnClickListener() {
     public void onClick(View v) { 
         itemOnClick(rowData);
     }
 });
}

public void itemOnClick(RowDataHolder rowData) {
    switch(audioPlayer.getPlayingplayer()) {
    case AudioPlayer.RIGHT:
    case AudioPlayer.NONE:
        audioPlayer.load(rowData.songInfo, AudioPlayer.LEFT);
        break;
    case AudioPlayer.LEFT:
        audioPlayer.load(rowData.songInfo, AudioPlayer.RIGHT);  
        break;
    }
}
...
}

AudioPlayer is a class that uses annotations (@EBean), but I can't write

@Bean
AudioPlayer audioPlayer;

because I can't use annotations in this class. How can I use AndroidAnnotations in CursorAdapter?

Many thanks in advance .

Was it helpful?

Solution

Create a constructor that takes one argument, the context.

SongInfoAdapter (Context context) {
    super(context, null, FLAG_AUTO_REQUERY);
}

Create an init method and set the cursor for the adapter in init.

public void init(Cursor c) {
    this.changeCursor(c);
}

Now you can annotate SongInfoAdapter with @EBean and use annotations.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top