Advertisement
Guest User

Untitled

a guest
May 19th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.53 KB | None | 0 0
  1. package com.example.student.telefony;
  2.  
  3. import android.app.LoaderManager;
  4. import android.content.ContentUris;
  5. import android.content.CursorLoader;
  6. import android.content.Intent;
  7. import android.content.Loader;
  8. import android.database.Cursor;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.view.ActionMode;
  11. import android.view.Menu;
  12. import android.view.MenuInflater;
  13. import android.view.MenuItem;
  14. import android.view.View;
  15. import android.widget.AbsListView;
  16. import android.widget.AdapterView;
  17. import android.widget.ListView;
  18. import android.widget.SimpleCursorAdapter;
  19. import android.os.Bundle;
  20.  
  21. public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor>
  22. {
  23.     private SimpleCursorAdapter mAdapterKursora;
  24.     private ListView mLista;
  25.  
  26.     @Override
  27.     protected void onCreate(Bundle savedInstanceState)
  28.     {
  29.         super.onCreate(savedInstanceState);
  30.         setContentView(R.layout.activity_main);
  31.         mLista = (ListView) findViewById(R.id.lista_wartosci);
  32.         wypelnijPola();
  33.  
  34.         mLista.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
  35.         mLista.setMultiChoiceModeListener(wyborWieluElementowListy()); //Listener do listy, służy do zaznaczenia wielu elementów
  36.  
  37.         /**
  38.          * Listener do listy, reaguje na kliknięcie elementu
  39.          */
  40.         mLista.setOnItemClickListener(new AdapterView.OnItemClickListener()
  41.         {
  42.             @Override
  43.             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
  44.             {
  45.                 Intent zamiar = new Intent(MainActivity.this, EditActivity.class);
  46.                 zamiar.putExtra(PomocnikBD.ID, l);
  47.                 startActivityForResult(zamiar, 0);
  48.             }
  49.         });
  50.     }
  51.  
  52.     /**
  53.      * Metoda wypełnia listę danymi
  54.      */
  55.     private void wypelnijPola()
  56.     {
  57.         getLoaderManager().initLoader(0, null, this);
  58.         String[] mapujZ = new String[] { PomocnikBD.PRODUCENT, PomocnikBD.MODEL };
  59.         int[] mapujDo = new int[] { R.id.producentText, R.id.modelText };
  60.         mAdapterKursora = new SimpleCursorAdapter(this, R.layout.list_row, null, mapujZ, mapujDo, 0);
  61.         mLista.setAdapter(mAdapterKursora);
  62.     }
  63.  
  64.     @Override
  65.     public Loader<Cursor> onCreateLoader(int id, Bundle args)
  66.     {
  67.         String[] projekcja = { PomocnikBD.ID, PomocnikBD.PRODUCENT, PomocnikBD.MODEL };
  68.         CursorLoader loaderKursora = new CursorLoader(this, TelefonyProvider.URI_ZAWARTOSCI, projekcja, null, null, null);
  69.         return loaderKursora;
  70.     }
  71.  
  72.     @Override
  73.     public void onLoadFinished(Loader<Cursor> loader, Cursor dane)
  74.     {
  75.         mAdapterKursora.swapCursor(dane);
  76.     }
  77.  
  78.     @Override
  79.     public void onLoaderReset(Loader<Cursor> loader)
  80.     {
  81.         mAdapterKursora.swapCursor(null);
  82.     }
  83.  
  84.     /**
  85.      * Metoda uruchamia aktywność EditActivity w trybie dodawania nowego elementu
  86.      */
  87.     private void tworzElement()
  88.     {
  89.         Intent zamiar = new Intent(this, EditActivity.class);
  90.         zamiar.putExtra(PomocnikBD.ID, (long) -1);
  91.         startActivityForResult(zamiar, 0);
  92.     }
  93.  
  94.  
  95.     /**
  96.      * Dodaje menu
  97.      */
  98.     @Override
  99.     public boolean onCreateOptionsMenu(Menu menu)
  100.     {
  101.         MenuInflater inflater = getMenuInflater();
  102.         inflater.inflate(R.menu.pasek_akcji_lista_tel, menu);
  103.         return true;
  104.     }
  105.  
  106.     /**
  107.      * Metoda wykonuje się gdy zostanie kliknięty jakiś przycisk w menu
  108.      */
  109.     @Override
  110.     public boolean onOptionsItemSelected(MenuItem item)
  111.     {
  112.         if(item.getItemId() == R.id.dodaj) //Instrukcja wykona się gdy zostanie wciśnięty przycisk "Dodaj"
  113.         {
  114.             tworzElement();
  115.         }
  116.  
  117.         return super.onOptionsItemSelected(item);
  118.     }
  119.  
  120.     /**
  121.      * Listener do listy, służy do zaznaczenia wielu elementów
  122.      */
  123.     private AbsListView.MultiChoiceModeListener wyborWieluElementowListy()
  124.     {
  125.         return new AbsListView.MultiChoiceModeListener()
  126.         {
  127.             @Override
  128.             public boolean onPrepareActionMode(ActionMode mode, Menu menu)
  129.             {
  130.                 return false;
  131.             }
  132.  
  133.             @Override
  134.             public void onDestroyActionMode(ActionMode mode) {}
  135.  
  136.             @Override
  137.             public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {}
  138.  
  139.             /**
  140.              * Dodaje menu
  141.              */
  142.             @Override
  143.             public boolean onCreateActionMode(ActionMode mode, Menu menu)
  144.             {
  145.                 MenuInflater inflater = mode.getMenuInflater();
  146.                 inflater.inflate(R.menu.pasek_kontekstowy_listy, menu);
  147.                 return true;
  148.             }
  149.  
  150.             /**
  151.              * Metoda wykonuje się gdy zostanie kliknięty jakiś przycisk w menu
  152.              */
  153.             @Override
  154.             public boolean onActionItemClicked(ActionMode mode, MenuItem item)
  155.             {
  156.                 if(item.getItemId() == R.id.kasuj_menu) //Instrukcja wykona się gdy zostanie wciśnięty przycisk "USUŃ"
  157.                 {
  158.                     long[] zaznaczone = mLista.getCheckedItemIds();
  159.  
  160.                     for(int i = 0; i < zaznaczone.length; i++)
  161.                     {
  162.                         getContentResolver().delete(ContentUris.withAppendedId(TelefonyProvider.URI_ZAWARTOSCI, zaznaczone[i]), null, null);
  163.                     }
  164.  
  165.                     return true;
  166.                 }
  167.  
  168.                 return false;
  169.             }
  170.         };
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement