Android fragments ListView onItemClick启动另一个带有片段的ListView
启动时,我的应用程序会启动一个片段,其中显示“项目”的列表视图。当我单击一个项目时,会启动一个新的片段,其中显示项目的详细信息,包括另一个“任务”列表视图(每个项目对象可以包含许多任务) 我在初始化第二个listview的arrayadapter时遇到问题。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
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适配器)?如果我使用子片段,可能不会有这个问题。在这种情况下:填充带有项目列表的片段。用户点击一个项目,一个显示项目详细信息和任务列表视图的子片段被启动。下面的帖子表明我正在尝试做的是可能的,尽管我宁愿使用一个新片段而不是一个新活动,因为它在设备间更灵活。这对任何人来说似乎都不是问题,这一事实表明我一定是在某个地方犯了一个愚蠢的错误,但我看不到任何这样的事情。