gpt4 book ai didi

java - 完成 UI Activity 分配

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:45 26 4
gpt4 key购买 nike

<分区>

我有一个 Android 编程的 UI 实验室,我正在努力完成。我觉得我很近,但又很远。我有四个正在处理的 Activity ,但其中只有三个需要处理。这是我所拥有的。我需要帮助来解决我所缺少的。

这是第一个 Activity ,它是 AddToDoActivity

package course.labs.todomanager;
import java.util.Calendar;
import java.util.Date;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.TimePicker;
import course.labs.todomanager.ToDoItem.Priority;
import course.labs.todomanager.ToDoItem.Status;

public class AddToDoActivity extends Activity {

// 7 days in milliseconds - 7 * 24 * 60 * 60 * 1000
private static final int SEVEN_DAYS = 604800000;

private static final String TAG = "Lab-UserInterface";

private static String timeString;
private static String dateString;
private static TextView dateView;
private static TextView timeView;


private Date mDate;
private RadioGroup mPriorityRadioGroup;
private RadioGroup mStatusRadioGroup;
private EditText mTitleText;
private RadioButton mDefaultStatusButton;
private RadioButton mDefaultPriorityButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_todo);

mTitleText = (EditText) findViewById(R.id.title);
mDefaultStatusButton = (RadioButton) findViewById(R.id.statusNotDone);
mDefaultPriorityButton = (RadioButton) findViewById(R.id.medPriority);
mPriorityRadioGroup = (RadioGroup) findViewById(R.id.priorityGroup);
mStatusRadioGroup = (RadioGroup) findViewById(R.id.statusGroup);
dateView = (TextView) findViewById(R.id.date);
timeView = (TextView) findViewById(R.id.time);

// Set the default date and time

setDefaultDateTime();

// OnClickListener for the Date button, calls showDatePickerDialog() to show
// the Date dialog

final Button datePickerButton = (Button) findViewById(R.id.date_picker_button);
datePickerButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
showDatePickerDialog();
}
});

// OnClickListener for the Time button, calls showTimePickerDialog() to show
// the Time Dialog

final Button timePickerButton = (Button) findViewById(R.id.time_picker_button);
timePickerButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
showTimePickerDialog();
}
});

// OnClickListener for the Cancel Button,

final Button cancelButton = (Button) findViewById(R.id.cancelButton);
cancelButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
log("Entered cancelButton.OnClickListener.onClick()");

//TODO - Implement onClick().
Intent intent = new Intent setResult;
finish();

}
});

//OnClickListener for the Reset Button

final Button resetButton = (Button) findViewById(R.id.resetButton);
resetButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
log("Entered resetButton.OnClickListener.onClick()");

//TODO - Reset data fields to default values
setDefaultDateTime();
mTitleText.setText("");
mDefaultStatusButton.setChecked(true);
mDefaultPriorityButton.setChecked(true);




}
});

// OnClickListener for the Submit Button
// Implement onClick().

final Button submitButton = (Button) findViewById(R.id.submitButton);
submitButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
log("Entered submitButton.OnClickListener.onClick()");

// Gather ToDoItem data

//TODO - Get Priority
Priority priority = getPriority();

//TODO - Get Status
Status status = getStatus();

//TODO - Title
String titleString = mTitleText.getText().toString();

// Date
String fullDate = dateString + " " + timeString;

// Package ToDoItem data into an Intent
Intent data = new Intent();
ToDoItem.packageIntent(data, titleString, priority, status, fullDate);

//TODO - return data Intent and finish
setResult(Activity.RESULT_OK, data);
finish();

}
});
}

// Do not modify below here

// Use this method to set the default date and time

private void setDefaultDateTime() {

// Default is current time + 7 days
mDate = new Date();
mDate = new Date(mDate.getTime() + SEVEN_DAYS);

Calendar c = Calendar.getInstance();
c.setTime(mDate);

setDateString(c.get(Calendar.YEAR), c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH));

dateView.setText(dateString);

setTimeString(c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE),
c.get(Calendar.MILLISECOND));

timeView.setText(timeString);
}

private static void setDateString(int year, int monthOfYear, int dayOfMonth) {

// Increment monthOfYear for Calendar/Date -> Time Format setting
monthOfYear++;
String mon = "" + monthOfYear;
String day = "" + dayOfMonth;

if (monthOfYear < 10)
mon = "0" + monthOfYear;
if (dayOfMonth < 10)
day = "0" + dayOfMonth;

dateString = year + "-" + mon + "-" + day;
}

private static void setTimeString(int hourOfDay, int minute, int mili) {
String hour = "" + hourOfDay;
String min = "" + minute;

if (hourOfDay < 10)
hour = "0" + hourOfDay;
if (minute < 10)
min = "0" + minute;

timeString = hour + ":" + min + ":00";
}

private Priority getPriority() {

switch (mPriorityRadioGroup.getCheckedRadioButtonId()) {
case R.id.lowPriority: {
return Priority.LOW;
}
case R.id.highPriority: {
return Priority.HIGH;
}
default: {
return Priority.MED;
}
}
}

private Status getStatus() {

switch (mStatusRadioGroup.getCheckedRadioButtonId()) {
case R.id.statusDone: {
return Status.DONE;
}
default: {
return Status.NOTDONE;
}
}
}

// DialogFragment used to pick a ToDoItem deadline date

public static class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

// Use the current date as the default date in the picker

final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);

// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
setDateString(year, monthOfYear, dayOfMonth);

dateView.setText(dateString);
}

}

// DialogFragment used to pick a ToDoItem deadline time

public static class TimePickerFragment extends DialogFragment implements
TimePickerDialog.OnTimeSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);

// Create a new instance of TimePickerDialog and return
return new TimePickerDialog(getActivity(), this, hour, minute,
true);
}

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
setTimeString(hourOfDay, minute, 0);

timeView.setText(timeString);
}
}

private void showDatePickerDialog() {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}

private void showTimePickerDialog() {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getFragmentManager(), "timePicker");
}

private void log(String msg) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i(TAG, msg);
}

}

这是第二个 Activity ToDoItem

package course.labs.todomanager;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import android.content.Intent;

// Do not modify

public class ToDoItem {

public static final String ITEM_SEP = System.getProperty("line.separator");

public enum Priority {
LOW, MED, HIGH
};

public enum Status {
NOTDONE, DONE
};

public final static String TITLE = "title";
public final static String PRIORITY = "priority";
public final static String STATUS = "status";
public final static String DATE = "date";
public final static String FILENAME = "filename";

public final static SimpleDateFormat FORMAT = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.US);

private String mTitle = new String();
private Priority mPriority = Priority.LOW;
private Status mStatus = Status.NOTDONE;
private Date mDate = new Date();

ToDoItem(String title, Priority priority, Status status, Date date) {
this.mTitle = title;
this.mPriority = priority;
this.mStatus = status;
this.mDate = date;
}

// Create a new ToDoItem from data packaged in an Intent

ToDoItem(Intent intent) {

mTitle = intent.getStringExtra(ToDoItem.TITLE);
mPriority = Priority.valueOf(intent.getStringExtra(ToDoItem.PRIORITY));
mStatus = Status.valueOf(intent.getStringExtra(ToDoItem.STATUS));

try {
mDate = ToDoItem.FORMAT.parse(intent.getStringExtra(ToDoItem.DATE));
} catch (ParseException e) {
mDate = new Date();
}
}

public String getTitle() {
return mTitle;
}

public void setTitle(String title) {
mTitle = title;
}

public Priority getPriority() {
return mPriority;
}

public void setPriority(Priority priority) {
mPriority = priority;
}

public Status getStatus() {
return mStatus;
}

public void setStatus(Status status) {
mStatus = status;
}

public Date getDate() {
return mDate;
}

public void setDate(Date date) {
mDate = date;
}

// Take a set of String data values and
// package them for transport in an Intent

public static void packageIntent(Intent intent, String title,
Priority priority, Status status, String date) {

intent.putExtra(ToDoItem.TITLE, title);
intent.putExtra(ToDoItem.PRIORITY, priority.toString());
intent.putExtra(ToDoItem.STATUS, status.toString());
intent.putExtra(ToDoItem.DATE, date);

}

public String toString() {
return mTitle + ITEM_SEP + mPriority + ITEM_SEP + mStatus + ITEM_SEP
+ FORMAT.format(mDate);
}

public String toLog() {
return "Title:" + mTitle + ITEM_SEP + "Priority:" + mPriority
+ ITEM_SEP + "Status:" + mStatus + ITEM_SEP + "Date:"
+ FORMAT.format(mDate);
}

}

这是第三个 Activity ,它是 ToDoListAdapter

package course.labs.todomanager;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import course.labs.todomanager.ToDoItem.Status;

public class ToDoListAdapter extends BaseAdapter {

// List of ToDoItems
private final List<ToDoItem> mItems = new ArrayList<ToDoItem>();

private final Context mContext;

private static final String TAG = "Lab-UserInterface";

public ToDoListAdapter(Context context) {

mContext = context;

}

// Add a ToDoItem to the adapter
// Notify observers that the data set has changed

public void add(ToDoItem item) {

mItems.add(item);
notifyDataSetChanged();

}

// Clears the list adapter of all items.

public void clear(){

mItems.clear();
notifyDataSetChanged();

}

// Returns the number of ToDoItems

@Override
public int getCount() {

return mItems.size();

}

// Retrieve the number of ToDoItems

@Override
public Object getItem(int pos) {

return mItems.get(pos);

}

// Get the ID for the ToDoItem
// In this case it's just the position

@Override
public long getItemId(int pos) {

return pos;

}

//Create a View to display the ToDoItem
// at specified position in mItems

@Override
public View getView(int position, View convertView, ViewGroup parent) {


//TODO - Get the current ToDoItem
final ToDoItem toDoItem = getItemPos();

//TODO - Inflate the View for this ToDoItem
// from todo_item.xml.
LayoutInflater = itemLayout;
RelativeLayout itemLayout = m.context.getSystemService(R.layout.todo_item);

//TODO - Fill in specific ToDoItem data
// Remember that the data that goes in this View
// corresponds to the user interface elements defined
// in the layout file

//TODO - Display Title in TextView

final TextView titleView = ItemLayout.findViewById;
setTextView;

//TODO - Set up Status CheckBox

final CheckBox statusView = ItemLayout.findViewById(R.id.statusCheckBox);
statusView.setChecked(checked) statusDone;

statusView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
log("Entered onCheckedChanged()");

//TODO - Set up and implement an OnCheckedChangeListener, which
// is called when the user toggles the status checkbox
if isChecked ToDoItem.setStatus status.Done(true);
else


}
});

//TODO - Display Priority in a TextView

final TextView priorityView = findViewByID(R.id.PriorityView);
PriorityView.setToString();


//TODO - Display Time and Date.
// Hint - use ToDoItem.FORMAT.format(toDoItem.getDate()) to get date and time String

final TextView dateView = itemLayout.findViewById(R.id.dateView);
dateView.setText(ToDoItem.FORMAT);

// Return the View you just created
return itemLayout;

}

private void log(String msg) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i(TAG, msg);
}

}

这是第四个 Activity ToDoManagerActivity

package course.labs.todomanager;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.text.ParseException;
import java.util.Date;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import course.labs.todomanager.ToDoItem.Priority;
import course.labs.todomanager.ToDoItem.Status;

public class ToDoManagerActivity extends ListActivity {

// Add a ToDoItem Request Code
private static final int ADD_TODO_ITEM_REQUEST = 0;

private static final String FILE_NAME = "TodoManagerActivityData.txt";
private static final String TAG = "Lab-UserInterface";

// IDs for menu items
private static final int MENU_DELETE = Menu.FIRST;
private static final int MENU_DUMP = Menu.FIRST + 1;

ToDoListAdapter mAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Create a new TodoListAdapter for this ListActivity's ListView
mAdapter = new ToDoListAdapter(getApplicationContext());

// Put divider between ToDoItems and FooterView
getListView().setFooterDividersEnabled(true);

//TODO - Inflate footerView for footer_view.xml file

TextView footerView = TextView().getLayoutInflater()
.inflate(R.layout.footer_view, null);

//TODO - Add footerView to ListView
getListView fv = (ListView)findViewById(R.layout.footer_view);

footerView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

log("Entered footerView.OnClickListener.onClick()");

//TODO - Attach Listener to FooterView. Implement onClick().
Intent intent = new Intent(getBaseContext(), AddToDoActivity.class);
startActivityForResult(intent, ADD_TODO_ITEM_REQUEST);
}
});

//TODO - Attach the adapter to this ListActivity's ListView
getListView.footer_view.setAdapter(mAdapter, fv);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

log("Entered onActivityResult()");

// TODO - Check result code and request code.
// If user submitted a new ToDoItem
// Create a new ToDoItem from the data Intent
// and then add it to the adapter
if requestCode == ADD_TODO_ITEM_REQUEST {
also if resultCode != RESULT_OK(true);
new mAdapter++;

}
}

// Do not modify below here

@Override
public void onResume() {
super.onResume();

// Load saved ToDoItems, if necessary

if (mAdapter.getCount() == 0)
loadItems();
}

@Override
protected void onPause() {
super.onPause();

// Save ToDoItems

saveItems();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);

menu.add(Menu.NONE, MENU_DELETE, Menu.NONE, "Delete all");
menu.add(Menu.NONE, MENU_DUMP, Menu.NONE, "Dump to log");
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_DELETE:
mAdapter.clear();
return true;
case MENU_DUMP:
dump();
return true;
default:
return super.onOptionsItemSelected(item);
}
}

private void dump() {

for (int i = 0; i < mAdapter.getCount(); i++) {
String data = ((ToDoItem) mAdapter.getItem(i)).toLog();
log("Item " + i + ": " + data.replace(ToDoItem.ITEM_SEP, ","));
}

}

// Load stored ToDoItems
private void loadItems() {
BufferedReader reader = null;
try {
FileInputStream fis = openFileInput(FILE_NAME);
reader = new BufferedReader(new InputStreamReader(fis));

String title = null;
String priority = null;
String status = null;
Date date = null;

while (null != (title = reader.readLine())) {
priority = reader.readLine();
status = reader.readLine();
date = ToDoItem.FORMAT.parse(reader.readLine());
mAdapter.add(new ToDoItem(title, Priority.valueOf(priority),
Status.valueOf(status), date));
}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} finally {
if (null != reader) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

// Save ToDoItems to file
private void saveItems() {
PrintWriter writer = null;
try {
FileOutputStream fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
fos)));

for (int idx = 0; idx < mAdapter.getCount(); idx++) {

writer.println(mAdapter.getItem(idx));

}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != writer) {
writer.close();
}
}
}

private void log(String msg) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i(TAG, msg);
}

}

有没有想过如何改进 AddToDoAcitivity 中的 cancelButton 代码?

final Button cancelButton = (Button) findViewById(R.id.cancelButton);
cancelButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
log("Entered cancelButton.OnClickListener.onClick()");

//TODO - Implement onClick().
Intent intent = new Intent setResult;
finish();

}
});

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com