Bu derste listfragment kullanımını, sağladığı kolaylıkları anlatıp basit bir örnek yaptım.
Burda anlatılanlar aslında activity’lerdeki listviewdan çok da farklı değil. Sadece listview’ımız activity layoutunda değil fragmentimizde kullanıldı. Yinede tekrar etmek için yazdığımız kodlarda şu ifadeler önemli :
ArrayAdapter.createFromResource methodu ile res/values/strings dosyasına erişip veri kaynağımız olan gunler dizisine eriştik. Yine array adapterın 3. parametresi olan android.R.layout.simple_list_item_1 ise listemizde gösterilecek 1 satır bilginin layoutunu temsil ediyor. Böyle basit liste örnekleri için android ile beraber gelen hazır layoutları kullanabiliriz.
Videoda da gördüğünüz gibilistviewa fragment içindeki oncreateview methodundan erişemedik. Çünkü activity layoutumuz henüz tam olarak yaratılmamıştı. Hata almamak için listview’a fragment içindeki onActivityCreated methodu içinde eriştik.
Bu örneğin bitmiş halinin kodları şu şekilde :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.emrealtunbilek.listfragmentornek.MainActivity"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:id="@+id/container"> </FrameLayout> </RelativeLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyListFragment myListFragment=new MyListFragment(); //FragmentManager manager=getFragmentManager(); FragmentTransaction transaction=getFragmentManager().beginTransaction(); transaction.add(R.id.container, myListFragment, "addFrag"); transaction.commit(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public class MyListFragment extends ListFragment implements AdapterView.OnItemClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v= inflater.inflate(R.layout.list_fragment, container, false); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); ArrayAdapter adapter=ArrayAdapter.createFromResource(getActivity(), R.array.gunler, android.R.layout.simple_list_item_1); setListAdapter(adapter); getListView().setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getActivity(),"Tıklanan öğe :"+position,Toast.LENGTH_LONG).show(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@android:id/list" /> </LinearLayout> |