Java 如何在ArrayAdapter中启动片段转换

Java 如何在ArrayAdapter中启动片段转换,java,android,android-fragments,Java,Android,Android Fragments,我无法在ArrayAdapter中启动从列表片段调用的片段转换。基于此,我尝试了一些方法: 尽管在ListItemFragment类中实例化适配器时传递了getActivity()。有人能帮我吗 类ListItemFragment: import android.support.v4.app.Fragment; import com.model.ListItem; import com.Data; public class ListItemFragment extends Fragment{

我无法在ArrayAdapter中启动从列表片段调用的片段转换。基于此,我尝试了一些方法:

尽管在
ListItemFragment
类中实例化适配器时传递了
getActivity()。有人能帮我吗

类ListItemFragment:

import android.support.v4.app.Fragment;
import com.model.ListItem;
import com.Data;
public class ListItemFragment extends Fragment{

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {     

        super.onCreate(savedInstanceState); 

        View view = inflater.inflate(R.layout.list_container, container, false);

        ArrayList<ListItem> listItem = (ArrayList<ListItem>) Data.get();

        ListAdapter adapter = new ListAdapter(getActivity(), listItem);

        ListView listView = (ListView) view.findViewById(R.id.list_view);

        listView.setAdapter(adapter);
        return view;
    }
}
导入android.support.v4.app.Fragment;
导入com.model.ListItem;
导入通信数据;
公共类ListItemFragment扩展了片段{
创建视图上的公共视图(布局充气机、视图组容器、捆绑包保存状态){
super.onCreate(savedInstanceState);
视图=充气机。充气(R.layout.list\u容器,容器,错误);
ArrayList listItem=(ArrayList)Data.get();
ListAdapter=新的ListAdapter(getActivity(),listItem);
ListView=(ListView)view.findViewById(R.id.list\u视图);
setAdapter(适配器);
返回视图;
}
}
适配器:

import com.model.ListItem;

public class ListAdapter extends ArrayAdapter<ListItem> {

    public ListAdapter(Context context, ArrayList<ListItem> listItem) {

       super(context, R.layout.list_item, listItem);

    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {

       ListItem row = getItem(position); 

       final Context context = getContext();

       LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

       view = inflater.inflate(R.layout.list_item, parent, false);

       //FragmentManager fm = ((Activity) context).getChildFragmentManager();

       //FragmentManager fm = ((Activity) context).getSupportFragmentManager();

       //FragmentManager fm = ((Activity) context).getSupportFragmentManager();

       FragmentTransaction transaction = fm.beginTransaction();

       /*......buttonFragment = call a button Fragment.......*/

       transaction.replace(R.id.placeholder, buttonFragment);

       transaction.commit();

       return view;
   }
}
导入com.model.ListItem;
公共类ListAdapter扩展了ArrayAdapter{
公共ListAdapter(上下文上下文,ArrayList listItem){
super(上下文、R.layout.list\u项、列表项);
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
ListItem行=getItem(位置);
final Context=getContext();
LayoutInflater充气器=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u充气器\u SERVICE);
视图=充气机。充气(R.layout.list_项,父项,false);
//FragmentManager fm=((活动)上下文)。getChildFragmentManager();
//FragmentManager fm=((活动)上下文)。getSupportFragmentManager();
//FragmentManager fm=((活动)上下文)。getSupportFragmentManager();
FragmentTransaction=fm.beginTransaction();
/*……按钮碎片=调用按钮碎片*/
事务.替换(R.id.占位符,按钮碎片);
commit();
返回视图;
}
}

您实际在哪里构建片段事务?Helix,我想在
getView
方法中构建事务。我想在列表中添加一些按钮和容器片段。我已经更新了帖子。考虑使用视图而不是片段。如果不是不切实际的话,在适配器中使用片段会使其复杂化。您是遇到错误还是出现空指针异常?-也。。。我同意Elye的观点,你到底在哪里构建片段事务?Helix,我想在
getView
方法中构建事务。我想在列表中添加一些按钮和容器片段。我已经更新了帖子。考虑使用视图而不是片段。如果不是不切实际的话,在适配器中使用片段会使其复杂化。您是遇到错误还是出现空指针异常?-也。。。我同意Elye的观点
import com.model.ListItem;

public class ListAdapter extends ArrayAdapter<ListItem> {

    public ListAdapter(Context context, ArrayList<ListItem> listItem) {

       super(context, R.layout.list_item, listItem);

    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {

       ListItem row = getItem(position); 

       final Context context = getContext();

       LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

       view = inflater.inflate(R.layout.list_item, parent, false);

       //FragmentManager fm = ((Activity) context).getChildFragmentManager();

       //FragmentManager fm = ((Activity) context).getSupportFragmentManager();

       //FragmentManager fm = ((Activity) context).getSupportFragmentManager();

       FragmentTransaction transaction = fm.beginTransaction();

       /*......buttonFragment = call a button Fragment.......*/

       transaction.replace(R.id.placeholder, buttonFragment);

       transaction.commit();

       return view;
   }
}