Android Studio: 创建点击提醒时间列表的 TextView 实现
要实现这个功能,你需要进行以下步骤:
- 在布局文件中添加一个 TextView 和一个 Button 来实现点击事件。
- 创建一个适配器类来为 ListView 提供数据。
- 在适配器类中,创建一个内部类来保存每个列表项的数据。
- 在 Activity 中,初始化 ListView 和适配器,并为 ListView 设置适配器。
- 在 Activity 中,为 TextView 设置点击事件,当点击 TextView 时,弹出包含 5 分钟、10 分钟和 15 分钟的列表对话框。
- 在列表对话框的点击事件中,获取所选项的时间,并使用 Handler 和 Runnable 来实现定时提醒功能。
下面是一个示例代码的实现:
- 在布局文件中添加一个 TextView 和一个 Button:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click to set reminder time" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set Reminder" />
</LinearLayout>
- 创建适配器类:
public class TimeAdapter extends ArrayAdapter<String> {
private Context mContext;
private ArrayList<String> mTimes;
public TimeAdapter(Context context, ArrayList<String> times) {
super(context, 0, times);
mContext = context;
mTimes = times;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String time = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(android.R.layout.simple_list_item_1, parent, false);
}
TextView textView = convertView.findViewById(android.R.id.text1);
textView.setText(time);
return convertView;
}
}
- 在 Activity 中初始化 ListView 和适配器:
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
private Button mButton;
private ListView mListView;
private TimeAdapter mAdapter;
private ArrayList<String> mTimes;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = findViewById(R.id.textView);
mButton = findViewById(R.id.button);
mListView = new ListView(this);
mTimes = new ArrayList<>();
mTimes.add('5 minutes');
mTimes.add('10 minutes');
mTimes.add('15 minutes');
mAdapter = new TimeAdapter(this, mTimes);
mListView.setAdapter(mAdapter);
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle('Select Time')
.setAdapter(mAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String time = mTimes.get(which);
startReminder(time);
}
})
.setNegativeButton('Cancel', null)
.create()
.show();
}
});
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Handle button click
}
});
}
private void startReminder(String time) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Perform reminder action
}
}, getTimeInMillis(time));
}
private long getTimeInMillis(String time) {
switch (time) {
case '5 minutes':
return 5 * 60 * 1000;
case '10 minutes':
return 10 * 60 * 1000;
case '15 minutes':
return 15 * 60 * 1000;
default:
return 0;
}
}
}
这个示例代码实现了点击 TextView 后弹出一个包含 5 分钟、10 分钟和 15 分钟的列表对话框。当点击列表项时,会根据所选项的时间,在相应的时间后发送提醒消息。你可以根据自己的需求进行修改和调整。
原文地址: https://www.cveoy.top/t/topic/qrOP 著作权归作者所有。请勿转载和采集!