آموزش نمایش ListView در فرگمنت
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش نمایش ListView در فرگمنت خواهیم پرداخت همانطور که قبلا هم گفته بودم مبحث فرگمنت (Fragment) بسیار مهم است در ادامه با ما همراه باشید تا این مبحث را نیز فرا گیرید.
وارد پوشه layout شده و یک فایل به نام fragmentlayout.xml ایجاد کرده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 | <?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:id="@id/android:list" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:drawSelectorOnTop="false"/> </LinearLayout> |
در کد بالا listview را در فرگمنت قرار دادیم.
باید یک فایل دیگر در همان پوشه به نام rowlayout.xml ایجاد کرده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?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" > <TextView android:id="@+id/txtitem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" /> </LinearLayout> |
این فایل شکل ظاهری هر آیتم را تنظیم می کند.
وارد بخش جاوا شده و یک فایل به نام LstFragment.java ایجاد کرده و کدهای زیر را در آن قرار دهید.
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 26 | package ir.programchi; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class LstFragment extends ListFragment{ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragmentlayout, container, false); String[] datasource={"English","Persian","Khmer","Japanese","Russian","Chinese"}; ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(),R.layout.rowlayout,R.id.txtitem,datasource); setListAdapter(adapter); setRetainInstance(true); return rootView; } // Handle Item click event public void onListItemClick(ListView l, View view, int position, long id){ ViewGroup viewg=(ViewGroup)view; TextView tv=(TextView)viewg.findViewById(R.id.txtitem); Toast.makeText(getActivity(), tv.getText().toString(),Toast.LENGTH_LONG).show(); } } |
زمانی که بروی هرکدام از آیتم ها کیک شود یک Toast نمایش داده می شود اگر کمی دقت کنید متوجه می شوید findViewById کمی متفاوت از findViewById کردن در اکتیویتی معمولی می باشد.
تا اینجا آموزش به پایان رسیده است ولی شاید دوست داشته باشید فرگمنت را در اکتیویتی نیز فراخوانی کنید
برای اینکار باید مثل زیر عمل کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package ir.programchi; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.os.Bundle; import android.view.MenuItem; public class MainActivity extends FragmentActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LstFragment lstfragment=(LstFragment)getSupportFragmentManager().findFragmentByTag("lstfragment"); if(lstfragment==null){ lstfragment=new LstFragment(); FragmentTransaction transact=getSupportFragmentManager().beginTransaction(); transact.add(android.R.id.content,lstfragment,"lstfragment"); transact.commit(); } } |
این آموزش هم به پایان رسید.
موفق و پیروز باشید.