如何子列表视图项目可以有每个项目的数据

Posted

技术标签:

【中文标题】如何子列表视图项目可以有每个项目的数据【英文标题】:How to child listview item can have data for each item 【发布时间】:2019-08-31 01:28:11 【问题描述】:

我有两个列表视图,父列表视图具有项目 Essay,其中包含“20 论文标题”的子列表视图。当 Essay 的标题单击它时,它会打开一个具有文本视图以显示文本的活动。我不想为每篇 20 篇文章做 20 次活动。当我打开任何子项目时,有什么办法,它只显示该子项目的指定数据。 这是一个图片的例子

家长名单和已打开的描述性文章

[https://drive.google.com/file/d/1QksjP7hzpqmVCk_Y1ctwsDMYkijDHQPt/view?usp=sharing][1]

点击Descriptive Essay后。 IT 显示 Child EssayTitle 列表

[https://drive.google.com/open?id=1NLbkrKD9c8yZb7rvapCxb-Na_lCVJf3P][2]

现在点击子列表项文章标题“Call No Man Happy Till”。它显示完整答案

[https://docs.google.com/uc?export=download&id=1542uOZFzLx8vU7EMlsEhRaWZaguVTKHV ] [3]

我到处搜索我不知道该怎么做。对不起,但我是 android dev 的新手。我刚刚创建了一个自定义适配器和一个数组列表

 public class Writing extends AppCompatActivity 
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) 
            super.onCreate(savedInstanceState);
            setContentView(R.layout.formenuitem);


            ArrayList<MenuItems> essay = new ArrayList<>();



            ArrayList<MenuItems> items = new ArrayList<>();

            ArrayList<MenuItems> task2Item = new ArrayList<>();

            //================= main items
            items.add(new MenuItems("Descriptive Essay", "list of descriptive essay and solutions"));

            items.add(new MenuItems("Essay 1", "More Essay list"));

            items.add(new MenuItems("Type of Essay ", "How to start Essay Task 1, body-paragraph "));


            items.add(new MenuItems("Task 2", "Solved essay "));


   //show this list in when clicked on Descriotive essay item================================================================


            task2Item.add(new MenuItems("Call No Man Happy Till","This essay about crime"));
            task2Item.add(new MenuItems("Education","This essay about Education"));
            task2Item.add(new MenuItems("University","This essay about University"));
            task2Item.add(new MenuItems("Food","This essay about Food"));
            task2Item.add(new MenuItems("Games","This essay about crime"));
            task2Item.add(new MenuItems("Experience","This essay about crime"));
            task2Item.add(new MenuItems("This is another essay","This essay about crime"));
            task2Item.add(new MenuItems("This is another essay","This essay about crime"));




    //======================set up for main item list
         final    ListAdapter adapter = new ListAdapter(this, items, R.color.category_numbers);


         //setting adapter to have task 2 list
            final ListAdapter task2list = new ListAdapter(Writing.this ,task2Item,R.color.category_numbers);

            //creating variable to find list view for both
          final  ListView listView = findViewById(R.id.list);

          final ListView task2 = (ListView) findViewById(R.id.list);

            listView.setAdapter(adapter);

            // set up to click on the writing

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

                        if(position==0)
                            // make clickable at position 0

                            task2.setAdapter(task2list);

                            task2.setOnItemClickListener(new AdapterView.OnItemClickListener() 
                                @Override
                                public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
                                    if (position==0)

                                        Intent open = new Intent(Writing.this,ContentDisplay.class);

                                        startActivity(open);


                                    
                                
                            );

                    


                
            );

        
    

I just when I open essay item it leads to me to an essay title list and when I click on essay title it shows me whole answer


  [1]: https://i.stack.imgur.com/HpgLL.jpg
  [2]: https://i.stack.imgur.com/wc4wx.jpg
  [3]: https://i.stack.imgur.com/yLqeg.jpg

【问题讨论】:

【参考方案1】:

您需要一个自定义适配器。在适配器视图中实现 onClick 侦听器。对于位置,标记适配器视图并在侦听器中获取其标记。我希望您熟悉创建自定义适配器。 如果您需要更多帮助,我希望能提供帮助。

【讨论】:

谢谢你的回答。我已经尝试过,但我很困惑。我应该将数据存储在哪里,以便我可以在自定义适配器中引用它的 id。因此,当我单击每个子列表项时,它会针对每个项打开不同的文章。例子。单击描述性文章。点击描述性文章后。它显示 Child EssayTitles 列表,然后我看到完整的文章 如果显示不同的项目,使用位置标记adaper中的视图,记得将其转换为字符串。然后稍后,使用 v.getTag() 从 onclick 侦听器中获取此标签,并使用它来引用您需要的项目。 我刚刚知道你在说什么。早些时候我这样做是为了让自定义适配器在列表项中包含图像。如果我被卡住了,我会把完整的代码发给你兄弟

以上是关于如何子列表视图项目可以有每个项目的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在每个项目的列表视图中实现简单的类似按钮

如何在列表视图的每个项目上加载 json 数据并显示在 android 的另一个活动中获取的数据?

如何在 Flutter 中删除列表视图顶部的项目?

列表视图来自另一个列表视图中选择的对象的项目

如何停止在WPF列表视图中每个项目输出的标签被重复。

OnItemClickListener() 用于列表视图的每个项目中的微调器