Я должен сделать небольшой проект - Блокнот в Android Studio в моем колледже.
У меня проблема, потому что я должен выполнить действие, которое ищет и читает файл по его имени.
Это мой код:
NotesActivity - здесь у меня есть все, чтобы сделать список файлов, и я думаю, что здесь нужна помощь.
В функции onCreate (NotesActivity) я добавил строки с 48 по 69 для создания FilterList, но не работает.
Ты знаешь почему ? Спасибо за всестороннюю помощь.
package com.example.kompiuter.notepad;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class NotesActivity extends AppCompatActivity {
private ListView mListViewNotes;
private EditText findText;
private ArrayAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notes_activity);
findText = (EditText) findViewById(R.id.note_find);
mListViewNotes = (ListView) findViewById(R.id.list);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.floatingActionButton2);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),WriteNoteActivity.class);
startActivity(intent);
}
});
ArrayList<Notes> notes = new ArrayList<>();
ArrayList<String> noteFiles = new ArrayList<>();
adapter = new ArrayAdapter<>(this,R.layout.notes_activity_layout,notes);
mListViewNotes.setTextFilterEnabled(true);
mListViewNotes.setAdapter(adapter);
findText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
NotesActivity.this.adapter.getFilter().filter(s);
adapter.notifyDataSetChanged();
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
@Override
protected void onResume(){
super.onResume();
mListViewNotes.setAdapter(null);
final ArrayList<Notes> notes = Utilities.getAllSavedNotes(this);
if(notes == null || notes.size() == 0){
Toast.makeText(this,"Nie masz notatek do zapisania!",Toast.LENGTH_SHORT).show();
return;
}else{
final NotesAdapter na = new NotesAdapter(this,R.layout.notes_activity,notes);
mListViewNotes.setAdapter(na);
mListViewNotes.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String fileName = ((Notes)mListViewNotes.getItemAtPosition(position)).getDateTime() + Utilities.FILE_EXTENSION;
Intent viewNoteIntent = new Intent(getApplicationContext(),WriteNoteActivity.class);
viewNoteIntent.putExtra("NOTE_FILE",fileName);
startActivity(viewNoteIntent);
}
});
}
}
}
Далее идет Конструктор и Адаптер:
package com.example.kompiuter.notepad;
import android.content.Context;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.TimeZone;
public class Notes implements Serializable {
private String mTitle;
private String mContent;
private long mDateTime;
public Notes(long dateInMinillis,String title,String content){
mDateTime = dateInMinillis;
mTitle = title;
mContent = content;
}
public void setTitle(String title){
mTitle=title;
}
public String getTitle(){
return mTitle;
}
public long getDateTime() {
return mDateTime;
}
public String getDateTimeFormatted(Context context) {
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"
, context.getResources().getConfiguration().locale);
formatter.setTimeZone(TimeZone.getDefault());
return formatter.format(new Date(mDateTime));
}
public void setContent(String content){
mContent=content;
}
public String getContent() {
return mContent;
}
}
package com.example.kompiuter.notepad;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class NotesAdapter extends ArrayAdapter<Notes> {
public NotesAdapter(Context context, int resource, List<Notes> object) {
super(context, resource, object);
}
@Override
public View getView(int position, View converView, ViewGroup parent){
//return super.getView(position,converView,parent);
if (converView == null){
converView=LayoutInflater.from(getContext()).inflate(R.layout.notes_activity_layout,null);
}
Notes note =getItem(position);
if (note!=null){
TextView title = (TextView) converView.findViewById(R.id.noteName);
title.setText(note.getTitle());
}
return converView;
}
}