我是编码的初学者,我希望得到一些帮助。我想做一个报警应用程序。在我的主页片段上,我添加了一个按钮,它将警报添加到ScrollView内的LinearLayout中。警报中将包含三个TextView,以及一个用于激活/取消激活的按钮。
以下是我希望我的闹钟看起来的样子(目前我的编码中没有使用它;我创建它只是为了获得我想要制作的视觉资料):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:id="@+id/alarm_fl"
android:background="@mipmap/white_box">
<Button
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="9.5dp"
android:id="@+id/alarm_activation_button"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="70dp"
android:layout_marginTop="5dp"
android:textSize="10pt"
android:id="@+id/alarm_time"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="165dp"
android:layout_marginTop="11.5dp"
android:textSize="7pt"
android:id="@+id/alarm_ampm"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="70dp"
android:layout_marginTop="30dp"
android:textSize="5pt"
android:id="@+id/alarm_day"/>
</FrameLayout>
这就是我目前正在片段中测试警报的方式:
addAlarm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
LayoutInflater alarm_inflater = (LayoutInflater) getContext().getSystemService(LAYOUT_INFLATER_SERVICE);
ViewGroup parent = (ViewGroup) getActivity().findViewById(R.id.alarm_ll);
View alarm_view = alarm_inflater.inflate(R.layout.alarm_layout, parent);
TextView alarm_time = (TextView) alarm_view.findViewById(R.id.alarm_time);
alarm_time.setText("9시 45분");
TextView alarm_ampm = (TextView) alarm_view.findViewById(R.id.alarm_ampm);
alarm_ampm.setText("오후");
TextView alarm_day = (TextView) alarm_view.findViewById(R.id.alarm_day);
alarm_day.setText("월,화,수,목,금");
Button activation_button = (Button) alarm_view.findViewById(R.id.alarm_activation_button);
activation_button.setBackgroundResource(R.mipmap.checkbox_deactivated);
}
});
其中alarm_ll是我想用新创建的警报填充的LinearLayout。
在我看来,我需要为每个按钮和TextView分别操作它们的唯一ID。
现在我的问题是:
如果我想在点击按钮时以编程方式添加视图,这是正确的方法吗?或者有更好,更简单的方法吗?
我的闹钟最终需要成为对象。像User这样的非活动类,或者在这种情况下是Alarm,是否可以为它自己设置一个布局?
如何通过点击按钮创建每个视图的唯一ID?
当我现在测试运行我的应用程序时,我添加到alarm_ll中的布局将不会被保存,因此如果我转移到另一个活动并返回,则会重置alarm_ll。当它们不是原始数据类型时,如何将它们保存在片段中?
我很抱歉一次提出这么多问题,但我真的很想得到一些答案或建议。谢谢。
答案 0 :(得分:0)
我假设您希望能够设置多个警报。这是对ListView
或RecyclerView
的完美使用,它允许您对同一视图的多个副本进行充气,并根据某些基础数据显示列表。
我建议你学习创建&#34;模型&#34;哪些是存储数据的对象。这些&#34;模型&#34;对象应与显示数据的视图对象分开。有几种设计模式通常用于这种分离:模型 - 视图 - 控制器,模型 - 视图 - 展示器和模型 - 视图 - 模型视图。
android:id
通常用于在Java代码中获取视图的对象。当您动态创建视图时,无论是在问题中显示的方式还是通过膨胀XML,您已经拥有此对象,因此我认为不需要为这些动态创建的视图分配ID。
使用我在#2中建议的其中一种设计模式时,您还将创建一种存储数据的方法。 Android提供了一个API,用于在数据库中存储信息。这可以通过使用&#34;适配器&#34;轻松显示在ListView
或RecyclerView
中。