آموزش نمایش ListView در فرگمنت
در این سری از آموزش برنامه نویسی اندروید به آموزش نمایش ListView در فرگمنت خواهیم پرداخت همانطور که قبلا هم گفته بودم مبحث فرگمنت (Fragment) بسیار مهم است در ادامه با ما همراه باشید تا این مبحث را نیز فرا گیرید.
وارد پوشه layout شده و یک فایل به نام fragmentlayout.xml ایجاد کرده و کدهای زیر را در آن قرار دهید.
fragmentlayout.xml
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
در کد بالا listview را در فرگمنت قرار دادیم.
باید یک فایل دیگر در همان پوشه به نام rowlayout.xml ایجاد کرده و کدهای زیر را در آن قرار دهید.
rowlayout.xml
textview>
xmlns:android="
http://schemas.android.com/apk/res/android
"
android:layout_width="match_parent"
android:layout_height="match_parent"
> android:orientation="vertical"
android:id="@+id/txtitem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp />"
این فایل شکل ظاهری هر آیتم را تنظیم می کند.
وارد بخش جاوا شده و یک فایل به نام LstFragment.java ایجاد کرده و کدهای زیر را در آن قرار دهید.
LstFragment.java
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 adapter=new ArrayAdapter(getActivity(),R.layout.rowlayout,R.id.txtitem,datasource);
setListAdapter(adapter);
setRetainInstance(true);
return rootView;
}
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 کردن در اکتیویتی معمولی می باشد.
برای اینکار باید مثل زیر عمل کنید.
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();
}
}
این آموزش هم به پایان رسید.