In meiner Anwendung zeigt Daten aus einer CSV-Datei reibungslos. Eine Suchfunktion kann jedoch nicht hinzugefügt werden. Jede Hilfe würde sehr geschätzt werden.ArrayAdapter Suche funktioniert nicht
Wie kann ich getFilter().filter(s.toString())
implementieren?
In Haupt Java-Klasse:
search_edit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Call back the Adapter with current character to Filter
mAdapter.getFilter().filter(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
Mein Adapter:
public class CSVAdapter extends ArrayAdapter<State> {
Context ctx;
private static LayoutInflater inflater=null;
public CSVAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
this.ctx = context;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
loadArrayFromFile();
}
@Override
public View getView(final int pos, View convertView, final ViewGroup parent){
View rowView;
rowView = inflater.inflate(R.layout.city_element, null);
TextView city_name_txtObj=(TextView)rowView.findViewById(R.id.city_name_txt);
city_name_txtObj.setText(getItem(pos).getName());
return rowView;
}
private void loadArrayFromFile(){
try {
// Get input stream and Buffered Reader for our data file.
InputStream is = null;
try {
is = ctx.getAssets().open("area.csv");
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
//Read each line
while ((line = reader.readLine()) != null) {
//Split to separate the name from the capital
String[] RowData = line.split(",");
//Create a State object for this row's data.
State cur = new State();
cur.setName(RowData[1]);
cur.setPin(RowData[2]);
cur.setLocation(RowData[3]);
cur.setLatitude(RowData[4]);
cur.setLongitude(RowData[5]);
//Add the State object to the ArrayList (in this case we are the ArrayList).
this.add(cur);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Staat ist meine Modellklasse:
public class State {
private String name,pinCode,location,latitude,longitude;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPin() { return pinCode;}
public void setPin(String pinCode) {
this.pinCode = pinCode;
}
public String getLocation() { return location;}
public void setLocation(String location) {
this.location = location;
}
public String getLatitude() { return latitude;}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() { return longitude;}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
}
diese Frage vielleicht zu einfach, aber ich habe‘ Ich finde keine geeignete Lösung. Bitte hilf mir.
versuchen dieses http://stackoverflow.com/questions/14118309/how to-use-search-Funktionalität-in-custom-list-view-in-android/14119383 # 14119383 –
@Ganesh versucht bereits. – Kankana