java - FilterList / 从 Android Studio 中的列表中搜索不起作用。我需要帮助,因为我没有 IDEA。
问题描述
我必须在我大学的 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;
}
}
解决方案
推荐阅读
- python - 在 .py 文件完成运行之前关闭 Windows Python 3.7
- powershell - 如何在 AD 中禁用组
- haskell - 在同一函数中处理多种不同的数据类型
- javascript - 当变量是有条件的时,如何解决 React 中的依赖数组警告?
- flutter - 在 Row 小部件中垂直居中某些元素
- javascript - 如何在 Next.js 中的 getServerSideProps() 上传递更多内容
- vue.js - 为什么@vue/cli-service-global 尝试运行 npm "serve" 脚本而不是即时原型
- css - Flexbox 5x5 网格?
- c - 调试 qemu-arm SIGSEGV
- android - 使用 gstreamermm 和 glibmm 为 android 构建 gstreamer