【问题标题】:ListView onItemClick launches another ListView - with FragmentsListView onItemClick 启动另一个 ListView - 带有片段
【发布时间】:2015-06-02 14:43:17
【问题描述】:

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

我在为第二个列表视图初始化 arrayadapter 时遇到问题。 tasksAdapter = new TasksArrayAdapter(getActivity(),selectedProject.getTasks());

它无法编译,Android Studios 提供以下原因:

incompatible types. Required: ProjectsArrayAdapter. Found: 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();
        }
    });

为什么我不能创建这个新的阵列适配器?

【问题讨论】:

  • 这个仍然难倒我。我很确定第二个参数(arraylist)不是问题。我认为这与项目 arrayadapter 已经使用的上下文有关。
  • 是不是每个activity只能有一个ListView(或者一个list view adapter)?如果我使用子片段,也许我不会遇到这个问题。在这种情况下:填充项目列表的片段。用户点击一个项目,一个显示项目详细信息和任务列表视图的子片段被启动。
  • 以下帖子表明我正在尝试做的事情是可能的,尽管我宁愿使用新的片段而不是新的活动,因为它在设备之间会更加灵活。 stackoverflow.com/questions/4575132/…
  • 这对其他人来说似乎不是问题,这表明我一定只是在某个地方犯了一个愚蠢的错误,但我看不到任何这样的事情。

标签: android-fragments android-listview android-listfragment nested-lists child-fragment


【解决方案1】:

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

static TasksArrayAdapter tasksAdapter;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多