Опитвам се да осмисля ръководството за Android API за създаване на контекстни менюта, но те наистина не дават никакво обяснение за това как трябва да се използва AdapterContextMenuInfo.
Моят код:
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.internal.widget.IcsAdapterView.AdapterContextMenuInfo;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
...
public class MyActivity extends SherlockActivity {}
...
class MyCursorAdapter extends CursorAdapter {
...
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
View rowView = inflater.inflate(R.layout.list_row, parent, false);
registerForContextMenu(rowView);
return rowView;
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
android.view.MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context, menu);
}
@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
Log.d(MyApp.LOG_TAG, "info is null: "+ (info == null)); // info is null: true
...
}
}
От моето неясно разбиране за това как трябва да работят контекстните менюта, очаквах информацията да съдържа идентификатора на db ред или поне targetView, от който мога да извлека идентификатора като таг.
Моля, уведомете ме къде бъркам или как иначе мога да открия за кой елемент на ListView е показано контекстното меню.