有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用内部存储中的文件填充listview?

我正在尝试制作一个提醒应用程序,我使用手机内部存储器来存储输入的数据。如何从内部存储器读取文件,并将字符串放在titlelistviewReminderListActivity.java

无提醒性。爪哇

public class ReminderListActivity extends ListActivity {
    private static final int ACTIVITY_CREATE = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.content_reminder_list);
    String[] items = new String[]{"Title"};
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.reminder_row, R.id.text1, items);
    setListAdapter(adapter);
    registerForContextMenu(getListView());
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    Intent i = new Intent(this, ReminderEditActivity.class);
    i.putExtra("RowId", id);
    startActivity(i);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater mi = getMenuInflater();
    mi.inflate(R.menu.list_menu_item_longpress, menu);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater mi = getMenuInflater();
    mi.inflate(R.menu.list_menu, menu);
    return true;
}

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_insert:
            createReminder();
            return true;
    }
    return super.onMenuItemSelected(featureId, item);
}

private void createReminder() {
    Intent i = new Intent(this, ReminderEditActivity.class);
    startActivityForResult(i, ACTIVITY_CREATE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_delete:
            return true;
    }
    return super.onContextItemSelected(item);
}

public void onClickSave(View view) {
    Intent f = new Intent(this, ReminderEditActivity.class);
    startActivity(f);
}

}

下面是我用来将字符串保存到内部存储器的json文件中的活动

提醒编辑活动。爪哇

public class ReminderEditActivity extends Activity {
private Button mDateButton;
private Button mTimeButton;
private static final int DATE_PICKER_DIALOG = 0;
private static final int TIME_PICKER_DIALOG = 1;
private Calendar mCalendar;
private static final String DATE_FORMAT = "yyyy-MM-dd";
private static final String TIME_FORMAT = "kk:m";
private static final String FILENAME = "hello.json";
private EditText TitleEditText;
private EditText BodyEditText;
private Button EditTime;
private Button EditDate;
private ArrayList<Data> data =
        new ArrayList<Data>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.content_reminder_edit);
    mCalendar = Calendar.getInstance();
    mDateButton = (Button) findViewById(R.id.reminder_date);
    mTimeButton = (Button) findViewById(R.id.reminder_time);
    TitleEditText = (EditText) findViewById(R.id.title);
    BodyEditText = (EditText) findViewById(R.id.body);
    EditTime = (Button) findViewById(R.id.reminder_time);
    EditDate = (Button) findViewById(R.id.reminder_date);
    if (getIntent() != null) {
        Bundle extras = getIntent().getExtras();
        int rowId = extras != null ? extras.getInt("RowId") : -1;
        registerButtonListenersAndSetDefaultText();
    }
    readData();
}

public void readData() {
    try {
        FileInputStream fis = openFileInput(FILENAME);
        InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
        JsonReader jsonReader = new JsonReader(isr);

        String title = "";
        String body = "";
        String time = "";
        String date = "";

        jsonReader.beginArray(); // [

        while (jsonReader.hasNext()) {
            jsonReader.beginObject(); // {

            while (jsonReader.hasNext()) {
                String key = jsonReader.nextName();
                if (key.equals("Title")) {
                    title = jsonReader.nextString();
                } else if (key.equals("Body")) {
                    body = jsonReader.nextString();
                } else if (key.equals("Date")) {
                    date = jsonReader.nextString();
                } else if (key.equals("Time")) {
                    time = jsonReader.nextString();
                }
            }

            jsonReader.endObject(); // }

            Data content = new Data(
                    title, body, date, time
            );
            data.add(content);
        }

        jsonReader.endArray();

        jsonReader.close();
    } catch (IOException ex) {
        Toast.makeText(this, "cannot read file", Toast.LENGTH_SHORT).show();
    }
}

public void addFile(View view) {
    String title = TitleEditText.getText().toString();
    String body = BodyEditText.getText().toString();
    String time = EditTime.getText().toString();
    String date = EditDate.getText().toString();
    Toast.makeText(this, "File written", Toast.LENGTH_SHORT).show();
    Data content = new Data(
            title, body, date, time
    );
    data.add(content);
    writeAllData();
}

public void writeAllData() {
    try {
        FileOutputStream fos = openFileOutput(FILENAME,
                Context.MODE_PRIVATE);

        OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
        JsonWriter jsonWriter = new JsonWriter(osw);
        jsonWriter.setIndent("    ");

        jsonWriter.beginArray();

        for (int i = 0; i < data.size(); i++) {
            Data con = data.get(i);

            jsonWriter.beginObject();

            jsonWriter.name("Title").value(con.GetTitle());
            jsonWriter.name("Body").value(con.GetBody());
            jsonWriter.name("Date").value(con.GetDate());
            jsonWriter.name("Time").value(con.GetTime());
            jsonWriter.endObject();
        }

        jsonWriter.endArray();

        jsonWriter.close();
    } catch (IOException ex) {
        Toast.makeText(this, "Cant write file", Toast.LENGTH_LONG).show();
    }
}

private void registerButtonListenersAndSetDefaultText() {
    mTimeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog(TIME_PICKER_DIALOG);
        }
    });
    mDateButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog(DATE_PICKER_DIALOG);
        }
    });
    updateDateButtonText();
    updateTimeButtonText();
}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case DATE_PICKER_DIALOG:
            return showDatePicker();
        case TIME_PICKER_DIALOG:
            return showTimePicker();
    }
    return super.onCreateDialog(id);
}

private DatePickerDialog showDatePicker() {
    DatePickerDialog datePicker = new DatePickerDialog(ReminderEditActivity.this, new DatePickerDialog.OnDateSetListener() {


        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            mCalendar.set(Calendar.YEAR, year);
            mCalendar.set(Calendar.MONTH, monthOfYear);
            mCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            updateDateButtonText();
        }
    }, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
    return datePicker;
}

private TimePickerDialog showTimePicker() {
    TimePickerDialog timePicker = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {


        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
            mCalendar.set(Calendar.MINUTE, minute);
            updateTimeButtonText();
        }
    }, mCalendar.get(Calendar.HOUR_OF_DAY), mCalendar.get(Calendar.MINUTE), true);

    return timePicker;
}

private void updateDateButtonText() {
    SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
    String dateForButton = dateFormat.format(mCalendar.getTime());
    mDateButton.setText(dateForButton);
}

private void updateTimeButtonText() {
    SimpleDateFormat timeFormat = new SimpleDateFormat(TIME_FORMAT);
    String timeForButton = timeFormat.format(mCalendar.getTime());
    mTimeButton.setText(timeForButton);
}

}

共 (0) 个答案