рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реВрдЪреА

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдПрдХ рдмрд╛рд░ рдЬрдм рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдПрдХ рд╕реВрдЪреА рджреГрд╢реНрдп рдХрд╛рд░реНрдб рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрдирдиреНрджрд┐рдд рд╣реЛрдиреЗ рджреЗрдВ рдФрд░ рдПрдХ рд╕рдорд╛рдЪрд╛рд░ рдлрд╝реАрдб рдореЗрдВ рджреЗрдЦреЗрдВ:

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдмрдбрд╝реЗ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдирд╛ рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд▓реНрдкрдиреАрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдмреБрд░рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрддрдирд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛ред



рджреВрд╕рд░реА рдХрдард┐рдирд╛рдИ рдпрд╣ рдереА рдХрд┐ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреА рдПрдХрддреНрд░ рдХреА рдЬрд╛рдиреА рдереАред



рдЦреИрд░, рддрд╛рдХрд┐ рдЬреАрд╡рди рд╢рд╣рдж рдХреА рддрд░рд╣ рди рд▓рдЧреЗ, рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

API рд╕реЗ рд▓реЗрдХрд░ ListView рддрдХ


Google I / O 2010 рдореЗрдВ Virgil Dobjanschi рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╣ рдмрддрд╛рдпрд╛ рдХрд┐ REST API рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдмрд╣реБрдд рдкрд╣рд▓рд╛ рдкреИрдЯрд░реНрди рдкрдврд╝рддрд╛ рд╣реИ:
  1. рдЧрддрд┐рд╡рд┐рдзрд┐ рдРрд╕реА рд╕реЗрд╡рд╛ рдмрдирд╛рддреА рд╣реИ рдЬреЛ REST API рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддреА рд╣реИ;
  2. рд╕реЗрд╡рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреА рд╣реИ рдФрд░ рдХрдиреНрдЯреИрдВрдЯрдкреНрд░реЙрдЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬрддреА рд╣реИ;
  3. рдЧрддрд┐рд╡рд┐рдзрд┐ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИред


UPD рдпрд╣рд╛рдВ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╣реЛрд▓рд┐рд╡рд░ рдЙрдареА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╢рдмреНрдж рдХреЛ "рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ" рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ - рдпрд╣ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд╣рдо рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ REST рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдбрд╛рд▓реЗрдВ, рдлрд╝реАрдб рдореЗрдВ рдирдП рдбреЗрдЯрд╛ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВред рд▓реЗрдХрд┐рди, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:



рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рд░рд▓ рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рддреЗ рд╣реИрдВред рд╕рдорд╛рдзрд╛рди рдЖрд╕рд╛рдиреА рд╕реЗ Google рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрддрд╛ рд╣реВрдВред
рдХрд╛рд░реНрдб рд╕реВрдЪреА рдПрдбрд╛рдкреНрдЯрд░ рдореЗрдВ, рд╣рдо рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

@Override int getViewTypeCount() { //   ,       return VIEW_TYPE_COUNT; } @Override int getItemViewType(int position) { //          Cursor c = (Cursor)getItem(position); int columnIndex = c.getColumnIndex(VIEW_TYPE_COLUMN); return c.getInt(columnIndex); } @Override void bindView(View view, Context context, Cursor c) { //           int columnIndex = c.getColumnIndex(VIEW_TYPE_COLUMN); int viewType = c.getInt(columnIndex); switch(viewType) { case VIEW_TYPE_VIDEO: bindVideoView(view); break; case VIEW_TYPE_SUBSCRIPTION: //    } } @Override View newView(Context context, Cursor cursor, ViewGroup parent) { //        int columnIndex = c.getColumnIndex(VIEW_TYPE_COLUMN); int viewType = c.getInt(columnIndex); switch(viewType) { case VIEW_TYPE_VIDEO: return newVideoView(cursor); case VIEW_TYPE_SUBSCRIPTION: //    } } 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрджреНрднреБрдд CursorAdapter рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдЖрдк рд╣реА рд╕рдм рдХреБрдЫ рдХрд░ рджреЗрдЧрд╛: рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреГрд╢реНрдп рдХреИрд╢ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдЧрд╛, рдпрд╣ рдкрддрд╛ VIEW_TYPE_COLUMN рдХрд┐ рдХреНрдпрд╛ рдирдП рдпрд╛ рдкреБрд░рд╛рдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдХрд░реНрд╕рд░ рдореЗрдВ VIEW_TYPE_COLUMN рдХреЙрд▓рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рдо рдЯреЗрдк рдХреЗ рд▓рд┐рдП SQL рдХреНрд╡реЗрд░реА рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ


рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯреЗрдмрд▓ рд╣реЛрдиреЗ рджреЗрдВ:



рдХреБрд▓, рдЖрдкрдХреЛ рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓рдо рд▓реМрдЯрд╛рддреА рд╣реИ:

рд╕реНрддрдВрднрд╡реАрдбрд┐рдпреЛрд▓реЗрдЦрдХрдЯреИрдЧрдЯрд┐рдкреНрдкрдгреА
рдЖрдИрдбреАvideo_idauthor_idtag_idрдЗрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА
view_typeрд╡реАрдбрд┐рдпреЛрд╕рджрд╕реНрдпрддрд╛рд╕рджрд╕реНрдпрддрд╛рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдб рдХрд╛ рдкреНрд░рдХрд╛рд░
content_typeрд╡реАрдбрд┐рдпреЛрд▓реЗрдЦрдХреЛрдВрдЯреИрдЧрд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ - рдпрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо, рдпрджрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ
рд╢реАрд░реНрд╖рдХvideo_titleрд╢реВрдиреНрдпрд╢реВрдиреНрдпрд╡реАрдбрд┐рдпреЛ рд╢реАрд░реНрд╖рдХ
рдирд╛рдорд╢реВрдиреНрдпAUTHOR_NAMETAG_NAMEрд▓реЗрдЦрдХ рдХрд╛ рдирд╛рдо рдпрд╛ рдЯреИрдЧ рдирд╛рдо
рдЪрд┐рддреНрд░рд▓рд┐рдВрдХрд▓рд┐рдВрдХрд▓рд┐рдВрдХрддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ
рдЕрджреНрдпрддрдирдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдкрдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдкрдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдкрд╕рд░реНрд╡рд░ рдЕрджреНрдпрддрди рд╕рдордп


рдореИрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред


Sqlite рдореЗрдВ, рдХреНрд╡реЗрд░реА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:

 SELECT 0 as view_type, 'videos' as content_type, title, NULL as name, picture, updated FROM videos UNION ALL SELECT 1 as view_type, 'authors' as content_type, NULL as title, name, picture, updated FROM authors UNION ALL SELECT 1 as view_type, 'tags' as content_type, NULL as title, name, picture, updated FROM tags ORDER BY updated 


рдмреЗрд╢рдХ, рдЖрдк "рд╣рд╛рде рд╕реЗ" рдЗрд╕ рддрд░рд╣ рдХреА рдХреНрд╡реЗрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди SQLiteQueryBuilder рдореЗрдВ рдереЛрдбрд╝реА рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗред

рдЗрд╕рд▓рд┐рдП, рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣рдорд╛рд░реЗ ContentProvider рд╕реЗ рдлрд╝реАрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реА рд╣реИ:

 Cursor c = getContext().getContentResolver().query(Uri.parse("content://MyProvider/feed/")); 


рдЙрд╕реА рд╕рдордп, MyProvider.query рд╡рд┐рдзрд┐ рдореЗрдВ, MyProvider.query рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдЙрд░реА рдЯреЗрдк рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ "рдмреБрджреНрдзрд┐рдорд╛рди" рдХреНрд╡реЗрд░реА рдирд┐рд░реНрдорд╛рдг рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред

 Cursor query(Uri contentUri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { if (isFeedUri(contentUri)) return buildFeedUri(); //       // ... } Cursor buildFeedUri() { //   "-"      HashSet<String> unionColumnsSet = new HashSet<String>(); //  Uri  ,    (videos, authors  tags) List<Uri>contentUriList = getSubqueryContentUriList(); //       viewType String[] viewTypeColumns = new String[contentUriList.size()]; //      contentType String[] contentTypeColumns = new String[contentUriList.size()]; for (int i=0; i<contentUriList.size(); i++) { Uri contentUri = contentUriList.get(i); //       viewTypeColumns[i] = getViewTypeExpr(contentUri); // "0 as view_type" //   content_type contentTypeColumns[i] = getContentTypeExpr(contentUri); // "'videos' as content_type" //      List<String> projection = getProjection(contentUri); //       unionColumnsSet.addAll(projection); } // ,       ,  :  , //  content-type    ,    . String[] subqueries = new String[contentUriList.size()]; for (int i=0; i<contentUriList.size(); i++) { Uri contentUri = contentUriList.get(i); SQLiteQueryBuilder builder = new SQLiteQueryBuilder(); builder.setTables(getTable(contentUri)); //         "1 as content_type" //     ,  builder   //  "SELECT X as Y"   String[] unionColumns = prependContentTypeExpr(contentTypeColumns[i], unionColumnSet); //    ""     "0 as view_type" //  ,       Set<String> projection = prependViewTypeExpr(viewTypeColumns[i], getProjection(contentUri)); //  ,   String selection = computeWhere(contentUri); subqueries[i] = builder.buildUnionSubQuery( "content_type", // typeDiscriminatorColumn -   , //        unionColumns, projection, 0, getTable(contentUri), //    content_type // (      ) selection, null, // selectionArgs -   buildUnionSubQuery    // (   API level 1,  API level 11 -   ) null, // groupBy null // having ); } //   ,        . SQLiteQueryBuilder builder = new SQLiteQueryBuilder() String orderBy = "updated DESC"; String query = builder.buildUnionQuery( subqueries, orderBy, null // limit -   ,  . ); return getDBHelper().getReadableDatabase().rawQuery( query, null // selectionArgs -    ); } 


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ content://MyProvider/feed/ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ content://MyProvider/feed/ рд╣рдорд╛рд░рд╛ ContentProvider UNION рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рджреЗрддрд╛ рд╣реИред

рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ



рд▓реЗрдХрд┐рди рдпрд╣ рдХреНрдпрд╛ рд╣реИ? рд╣рдо рдПрдкреАрдЖрдИ рд╡реАрдбрд┐рдпреЛ рдХреЗ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛, рд▓реЙрдЧреНрд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реВрдЪреА рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...
рдмрд┐рдВрджреБ рд▓реЛрдбрд░ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ

 @Override public Loader<Cursor> onCreateLoader(int loaderId, Bundle params) { return new CursorLoader( getContext(), Uri.parse("content://MyContentProvider/feed/"), ... ); } 


рдЬрдм рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд┐рд╕реА ContentProvider рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреА рд╣реИ, CursorLoader рдПрдХ ContentObserver рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ Uri content://MyProvider/feed/ рд▓рд┐рдП рджреЗрдЦрддрд╛ content://MyProvider/feed/ ; рдЬрдм рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рд╕рд░реНрд╡рд░ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреА рд╣реИ, рддреЛ ContentProvider рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп Uri рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪрдирд╛ рджреЗрддрд╛ рд╣реИ, content://MyProvider/videos/ ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рд▓ рдХрд░реЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рдпрд╣ рдХреЛрдб рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдлрд╝реАрдб рдореЗрдВ рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪрдирд╛ рдкреНрд░рджрд╛рддрд╛ рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИ) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ:

 getContext.getContentResolver().notifyChange(Uri.parse("content://MyProvider/feed/", null)); 


рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди


Source: https://habr.com/ru/post/In221851/


All Articles