Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android fragments ListView onItemClick启动另一个带有片段的ListView_Android Fragments_Android Listview_Android Listfragment_Nested Lists_Child Fragment - Fatal编程技术网

Android fragments ListView onItemClick启动另一个带有片段的ListView

Android fragments ListView onItemClick启动另一个带有片段的ListView,android-fragments,android-listview,android-listfragment,nested-lists,child-fragment,Android Fragments,Android Listview,Android Listfragment,Nested Lists,Child Fragment,启动时,我的应用程序会启动一个片段,其中显示“项目”的列表视图。当我单击一个项目时,会启动一个新的片段,其中显示项目的详细信息,包括另一个“任务”列表视图(每个项目对象可以包含许多任务) 我在初始化第二个listview的arrayadapter时遇到问题。 tasksAdapter=newtasksarrayadapter(getActivity(),selectedProject.getTasks()) 它不会编译,Android Studio提供了以下原因: 不兼容的类型。必需:Proje

启动时,我的应用程序会启动一个片段,其中显示“项目”的列表视图。当我单击一个项目时,会启动一个新的片段,其中显示项目的详细信息,包括另一个“任务”列表视图(每个项目对象可以包含许多任务)

我在初始化第二个listview的arrayadapter时遇到问题。
tasksAdapter=newtasksarrayadapter(getActivity(),selectedProject.getTasks())

它不会编译,Android Studio提供了以下原因:

不兼容的类型。必需:ProjectsArrayAdapter。找到:TasksArrayAdapter

ProjectsArrayAdapter是在前面的片段上设置的,如下所示:

    //initialize a custom ArrayAdapter to connect the object to the listView

    projectsAdapter = new ProjectsArrayAdapter(getActivity(), Projects.getInstance().getProjects());
    projectsList = (ListView) view.findViewById(R.id.listViewProjects);

    projectsList.setAdapter(projectsAdapter);

    //=========================================================================================
    //when you click on a project from the list
    //=========================================================================================

    //create onClickListener for listView items and launch project details fragment on click

    projectsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            FragmentProject myProject = new FragmentProject();

            //grab the object you clicked on
            Bundle args = new Bundle();
            args.putInt("ARG_POSITION", position);
            myProject.setArguments(args);

            //launch project details fragment
            FragmentManager manager = getFragmentManager();
            FragmentTransaction transaction = manager.beginTransaction();
            transaction.add(R.id.main_layout, myProject);
            transaction.commit();
        }
    });
//初始化自定义ArrayAdapter以将对象连接到listView
projectsAdapter=newprojectsarrayadapter(getActivity(),Projects.getInstance().getProjects());
projectsList=(ListView)view.findViewById(R.id.listViewProjects);
projectsList.setAdapter(projectsAdapter);
//=========================================================================================
//单击列表中的项目时
//=========================================================================================
//为listView项创建onClickListener,并在单击时启动项目详细信息片段
projectsList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
FragmentProject myProject=新建FragmentProject();
//抓取您单击的对象
Bundle args=新Bundle();
参数putInt(“参数位置”,位置);
myProject.setArguments(args);
//启动项目详细信息片段
FragmentManager=getFragmentManager();
FragmentTransaction=manager.beginTransaction();
事务。添加(R.id.main_布局,myProject);
commit();
}
});

为什么我不能创建此新阵列适配器?

这是因为tasksAdapter被声明为ProjectsArrayAdapter而不是TasksArrayAdapter-复制/粘贴错误


静态任务rayadapter任务dapter

这个问题仍然困扰着我。我很确定第二个参数(arraylist)不是问题所在。我认为这与projects arrayadapter已经使用的上下文有关。是不是每个活动只能有一个ListView(或一个ListView适配器)?如果我使用子片段,可能不会有这个问题。在这种情况下:填充带有项目列表的片段。用户点击一个项目,一个显示项目详细信息和任务列表视图的子片段被启动。下面的帖子表明我正在尝试做的是可能的,尽管我宁愿使用一个新片段而不是一个新活动,因为它在设备间更灵活。这对任何人来说似乎都不是问题,这一事实表明我一定是在某个地方犯了一个愚蠢的错误,但我看不到任何这样的事情。