我正在創建一個應用程序,該應用程序針對給定的搜索詞或首字母縮寫詞搜索我的文本文件。這是我真正創建的第一個應用程序。文本文件的格式如下:acronym%term%definition。我有一個InputStream和一個BufferedReader逐行通過文件。然後我用百分號分割它,並使用我創建的Triple類將字符串放入三元組中,並將該Triple添加到ArrayList。我的下一個函數應該搜索包含搜索縮略詞或術語的Triple的ArrayList。如果無法找到首字母縮寫詞,則會轉到InvalidAcronym活動。如果它在那裏,它將進入ValidAcronym活動。出於某種原因,唯一觸發的活動是InvalidAcronym活動。我認爲這與將行添加到ArrayList有關。我原本只是使用HashMaps的縮寫和定義工作。有人可以幫我嗎?這裏是我的代碼:在Android應用程序中搜索列表並顯示答案
package com.redacted.laurenanderson.acronymlookup;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.util.Pair;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
public class Search extends AppCompatActivity{
public EditText mEdit;
public static String currAc;
// public static HashMap<String,String> acros = new HashMap<String,String>(){{
//add all currently known thingies.
//}};
public static ArrayList<Triple> acros2 = new ArrayList<Triple>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
InputStream is = this.getResources().openRawResource(R.raw.acronyms2);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String[] str;
//String FILENAME = "acronyms.txt";
String FILENAME = "acronyms2.txt";
try {
String s = reader.readLine();
while (s != null){
//str = s.split(" ",2);
//acros.put(str[0],str[1]);
//THIS IS GOING TO BE THE REPLACEMENT
str = s.split("%",3);
System.out.println(str.toString());
Triple<String,String,String> acro = new Triple<String,String,String>(str[0],str[1],str[2]);
acros2.add(acro);
s = reader.readLine();
}
}
catch(IOException e){
System.out.println("OH NO");
return;
}
mEdit = (EditText)findViewById(R.id.acroterm);
//FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.home);
//fab.setImageResource(R.drawable.ic_search);
ImageButton fab = (ImageButton) findViewById(R.id.search);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/* if(acros.containsKey(mEdit.getText().toString())){
currAc = mEdit.getText().toString();
Intent intent1 = new Intent(view.getContext(), ValidAcronym.class);
view.getContext().startActivity(intent1);
}
else{
Intent intent2 = new Intent(view.getContext(), InvalidAcronym.class);
view.getContext().startActivity(intent2);
}*/
for(Triple triple: acros2){
currAc = mEdit.getText().toString();
if(triple.contains(currAc)){
Intent intent1 = new Intent(view.getContext(), ValidAcronym.class);
view.getContext().startActivity(intent1);
}
}
Intent intent2 = new Intent(view.getContext(), InvalidAcronym.class);
view.getContext().startActivity(intent2);
}
});
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
/*public HashMap<String,String> getMap(){
return acros;
}*/
public ArrayList<Triple> getList(){return acros2;}
/*public static Pair<String,String> returnAcro(String s){
Pair<String,String> p = new Pair<String,String>(s,acros.get(s));
//Triple<String,String,String> p = new Triple<String,String,String>(s, triple.second(),triple.third());
return p;
}*/
public static Triple<String,String,String> returnAcro2(String s){
for(Triple triple : acros2){
if(triple.contains(s)){
return triple;
}
}
return null;
}}
只是一個想法,但如果聲明我會把一回在於,在一個開始你的有效活動 –
不知何故,完全解決了這個問題。你應該把它作爲答案,所以我可以給你信用! – CSRenA