【问题标题】:How could I use the button from in one activity to add to list view in another activity?如何使用一个活动中的按钮添加到另一个活动中的列表视图?
【发布时间】:2016-04-20 21:28:09
【问题描述】:

我有点困惑。想知道你是否可以帮忙。如果您需要任何其他详细信息,请告诉我。谢谢 :D

Picture

【问题讨论】:

  • 您是否正在尝试将项目动态添加到列表视图中 - 意思是,您的应用程序是否首先显示列表,然后允许用户“添加新项目”?这对于了解应用的流程很重要,因为实现这一点的方法可能不同。
  • 确实如此。这正是我想要做的。图片应该有帮助。它包含所有完整的详细信息。

标签: java android listview button android-activity


【解决方案1】:

在显示项目列表的活动中-您需要添加一个按钮(允许用户添加新项目)-单击此按钮后,您将启动“添加项目活动”(使用@987654324 @) 正如 Max 所建议的那样。当用户单击“添加项目活动”上的提交按钮时 - 然后设置结果setResult(Activity.RESULT_OK, resultIntentObject)(将由显示方法onActivityResult(int requestCode, int resultCode, Intent data))中的项目列表的活动接收回。现在,如果用户插入数据后,您“刷新”了项目列表 - 您可以在插入新数据后调用 adapter.notifyDataSetChanged()

让我进一步建议您查看描述如何Add Items to ListView 的公认答案,您还可以探索此处提供的有关如何Dynamically add elements to a listView Android 的选项

【讨论】:

  • 所以按钮必须在列表的同一个活动上。我在想也许它可能在描述活动中。是否必须将按钮添加到列表视图的同一活动中?
  • 但是,如果您从第一个活动/屏幕上的空列表开始,您将如何添加新项目?您将需要一个添加按钮,最好在您的 ActionBar 上 - see how to Add an ActionBar
【解决方案2】:

您可以改用片段,因为它们提供了更大的灵活性。然后 Activity 可以控制两个“Activity”(片段),您可以使用 FragmentManager 上的 .replace 在它们之间切换。 您可以做的另一件事是使用 parcelable 传递数据,但您必须将数据保存在数据库或以前的项目中。有了片段,你就不需要了。如果您可以提供更多关于您想要做什么的信息,那将非常有帮助。 谢谢!

【讨论】:

    【解决方案3】:

    如果您在除 main 之外的其他 XML 中创建了按钮,并且 onClick 方法位于除 MainActivity 之外的其他 Activity 中,那么您需要在 MainActivity 中创建 onClick 方法和从您的 MainActivity 中的其他活动调用该方法。

    另外,值得指出的是,您应该使用 RecyclerView 而不是 ListView 。 我希望这有帮助。我无法完全弄清楚您要做什么,这就是我的理解。

    假设这是您的按钮的 XML 代码:

    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/clearCanvas"
            android:onClick="clearCanvas"
            android:layout_gravity="bottom|center"
            android:text="CLEAR"/>
    

    在这一点上,您显然已经为方法 clearCanvas 设置了 onClick 。 现在,将在您的mainActivity 中查找此方法。

    如果您有另一个活动,其中存在所述按钮的onClick 方法,请删除该方法大括号内的参数。

    示例: ActiviyNotMain.java:

    //... 
     public void clearCanvas(View v) {
        *do this whatever is here*
    }
    //... 
    

    从这里删除View v

    MainActivity.java:

    //...
      private ActivityNotMain activity;
      //... 
      public void clearCanvas(View v) { 
       activity.clearCanvas();
    }
    //...
    

    注意:在MainActivity 中不要删除View v

    我希望这会有所帮助。

    【讨论】:

    • 太棒了。那么如何调用方法呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2020-05-06
    相关资源
    最近更新 更多