android 如何在 Fragment 中实现带有 checkBox 的 listView

How to implement listView with chechBox in Fragment in android

我是 android 的新手。我用滑动手势构建了标签。在其中一个片段中,我想要带有 CheckBox 的 listView。这是我的代码。

public class AddPeople extends Fragment 
{
ListView listView;  
List<String> names= new ArrayList<String>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub

     View rootView = inflater.inflate(R.layout.fragment_addpeople, container, false);
     listView= (ListView) rootView.findViewById(R.id.listView1);
     List<String> nameList= readContacts(getActivity());
     CustomAdapter adapter= new CustomAdapter(getActivity(), nameList);

    return rootView;
} } 

这里是 CustomAdapter class:

public class CustomAdapter extends ArrayAdapter 
{
  Context context;
  List<String> modelItems;
  @SuppressWarnings("unchecked")

  public CustomAdapter(Context context, List<String> resource) 
  {
     super(context,R.layout.row,resource);
     // TODO Auto-generated constructor stub
     this.context = context;
     this.modelItems = resource;
   }
   @Override
   public View getView(int position, View convertView, ViewGroup parent) 
   {
     // TODO Auto-generated method stub
     LayoutInflater inflater = ((Activity)context).getLayoutInflater();
     convertView = inflater.inflate(R.layout.row, parent, false); 
     TextView name = (TextView) convertView.findViewById(R.id.textView1);
     CheckBox cb = (CheckBox) convertView.findViewById(R.id.checkBox1);

     name.setText(modelItems.get(position));

     return convertView;
 }
}

这里是 row.xml 文件:

<?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="horizontal" >

<CheckBox
     android:id="@+id/checkBox1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginLeft="10dp"
     android:layout_marginRight="10dp"
     android:text="" />
<TextView
     android:id="@+id/textView1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="TextView"
     android:textSize="20dp" /> 
 </LinearLayout>

这是 fragment_addpeople.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >

 <ListView
     android:id="@+id/listView1"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:divider="@drawable/list_item_bg_pressed"
     android:dividerHeight="1dp" >

 </ListView>
</RelativeLayout>

我没有收到任何错误。但是复选框没有出现。但是使用 Activity 这段代码可以正常工作。请帮帮我。提前致谢

使用这个它会为你工作。

public class AddPeople extends Fragment 
{
ListView listView;  
List<String> names= new ArrayList<String>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub

     View rootView = inflater.inflate(R.layout.fragment_addpeople, container, false);
     listView= (ListView) rootView.findViewById(R.id.listView1);
     List<String> nameList= readContacts(getActivity());
     CustomAdapter adapter= new CustomAdapter(getActivity(), nameList);
listView.setAdapter(adapter);
    return rootView;
} } 

您只需要 setAdapter 到您的 ListView

listView.setAdapter(adapter);