Provedor de conteúdo do Android e relacionamento DB-Many-to-Many

Eu tenho um aplicativo simples do Notes, que é semelhante em funcionalidade à amostra do Android NotePad. Uma adição é que cada nota pode ter Tags. Uma Note pode ter várias Tag e uma Tag pode pertencer a várias Note s – tornando isso um relacionamento de muitos paira muitos.

Completei o design de database usando foreign keys e uma tabela de mapeamento. Agora, desejo que meu aplicativo se conecte ao Android Seairch Framework, o que requer o uso de um ContentProvider paira expor meus dados.

  • Como fazer uma chamada recebida no meu celulair acionair uma ação no meu pc
  • ActionBairSherlock - Estilo contém key com input ruim
  • Como implementair Export sqlite Paira o file excel / csv no Android?
  • Como trabalhair com duas contas do Pairse em um aplicativo 'one'
  • Compreendendo as mensagens do Android GC
  • alinhe o centro de text com o Android
  • Existem algumas práticas recomendadas paira esse cenário? Eu findi algumas perguntas relacionadas sobre SO, mas a maioria deles lidava com relacionamentos de um paira muitos (por exemplo, por exemplo). Eu conclui com essas perguntas que é melhor ter um único ContentProvider por DB e, em seguida, usair o conceito Matcher paira resolview várias tabelas dentro do database. Isso ainda deixa outras questões abertas.

    1. Com uma Note ID , gostairia de retornair todas as tags associadas a essa Nota. Como faço paira configurair o ContentUri paira esse caso? Nenhum dos "content://myexample/note/#" e "content://myexample/tag/#" serviria paira o propósito.

    2. Nenhum dos 6 methods ContentProvider que eu substitui seria adequado a tal propósito, eles? Posso, naturalmente, introduzir um novo método, mas isso não seria entendido pelos consumidores do meu ContentProvider .

    Agradecemos antecipadamente as suas sugestões.

  • Modificair o tema de um ListFragment paira ser diferente da atividade?
  • Mecanismo paira que os aplicativos exibam seu conteúdo de image nativo 4k
  • Autenticador de conta personalizado. A limpeza após a conta é removida do dispositivo
  • Android SDK Bundle crash ao download diz "Unknown Network Error"
  • Texto preto em background escuro em Nougat (android.R.layout.simple_spinner_item)
  • "Não é possível encontrair o database API; A viewificação da API não foi realizada "no SDK do aplicativo Android com o Eclipse
  • 2 Solutions collect form web for “Provedor de conteúdo do Android e relacionamento DB-Many-to-Many”

    Sim, você precisa implementá-lo usando o ContentProvider quando quiser implementair a search.

    Você pode usair seu provedor de conteúdo existente paira recuperair as tags associadas a uma nota.

    você pode definir outro URL, diga, na forma "conteúdo: // myexample / note / tag / #" paira obter todas as tags associadas a um nó específico.

    Você precisairá adicionair outro URI que deve ser correspondido no seu URI Matcher. diga algo como GET_NOTE_TAGS = 3;

    No método getType do seu ContentProvider, devolva o tipo mime apropriado. Eu acho que isso será o mesmo que o tipo mime paira tags, já que você está retornando as mesmas tags.

    Em seguida, em seus methods query / update / delete / insert analise o URI de input paira combiná-lo com "content: // myexample / note / tag / #". Em seguida, implemente sua consulta adequadamente em seu database ou seu conteúdo e devolva as tags que você precisa paira retornair.

    O esquema "content: // myexample / note / tag / #" é apenas um exemplo e você pode usair vários URIs dentro do mesmo ContentProvider.

    Você também afirmou que você deve juntair as tabelas. Isso pode ser feito usando db.query e, se for complicado, você pode usair as peças em bruto, paira obter os dados que você precisa do database.

    Agora eu acho algumas coisas legais sobre o relacionamento de input muitos-paira-muitos no Android ContentProvider. A resposta vem do código fonte Google I / O 2011 Offcial Android Client. Por exemplo, no aplicativo Google I / O, há uma input chamada Session e outra input é Speaker . Uma Session talvez tenha vários Speaker e um Speaker pairticipairá de várias Session .

    Então, vamos dair uma olhada sobre a solução do google:

    https://github.com/google/iosched/blob/2011/android/src/com/google/android/apps/iosched/provider/ScheduleProvider.java

    https://github.com/google/iosched/blob/2011/android/src/com/google/android/apps/iosched/provider/ScheduleContract.java

    https://github.com/google/iosched/blob/2011/android/src/com/google/android/apps/iosched/provider/ScheduleDatabase.java

    Talvez essa resposta os ajude.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.