- Forum-Beiträge: 1
23.03.2015, 20:03:05 via Website
23.03.2015 20:03:05 via Website
Hallo zusammen,
Ich bin daran für meine DB auf dem Raspberry ein Android App zu schreiben.
Die Abfrage nach den Daten mit json Funktioniert einwandfrei.
Nun wollte ich einen Filter einbauen und genau da stosse ich an meine grenzen.
Ich währe froh wenn mir jemand helfen könnte....
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Created by Roger on 11.03.2015.
*/
public class menu4_Fragment extends Fragment {
View rootview;
ListView list;
EditText search;
TextView ver;
TextView name;
TextView api;
Button Btngetdata;
ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();
//URL to get JSON Array
private static String url = "link";
//JSON Node Names
private static final String TAG_OS = "android";
private static final String TAG_VER = "AnlagenNr";
private static final String TAG_NAME = "ProjektBezeichnung";
private static final String TAG_API = "ProjektBezeichnung";
JSONArray android = null;
private List<String> originalData = null;
private List<String>filteredData = null;
private ArrayAdapter simpleAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootview = inflater.inflate(R.layout.menu4_layout, container, false);
final ListView listview = (ListView) rootview.findViewById(R.id.listView1);
final EditText inputSearch = (EditText) rootview.findViewById(R.id.inputSearch);
new JSONParse().execute();
return rootview;
}
private class JSONParse extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
//ver = (TextView)rootview.findViewById(R.id.vers);
name = (TextView)rootview.findViewById(R.id.name);
api = (TextView)rootview.findViewById(R.id.api);
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Daten werden Geladen ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
oslist = new ArrayList<HashMap<String, String>>();
}
@Override
protected JSONObject doInBackground(String... args) {
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl(url);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
pDialog.dismiss();
try {
// Getting JSON Array from URL
android = json.getJSONArray(TAG_OS);
for(int i = 0; i < android.length(); i++){
JSONObject c = android.getJSONObject(i);
// Storing JSON item in a Variable
String ver = c.getString(TAG_VER);
String name = c.getString(TAG_NAME);
String api = c.getString(TAG_API);
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_VER, ver);
map.put(TAG_NAME, name);
map.put(TAG_API, api);
oslist.add(map);
list=(ListView)rootview.findViewById(R.id.listView1);
search=(EditText)rootview.findViewById(R.id.inputSearch);
ListAdapter adapter = new SimpleAdapter(getActivity(), oslist,
R.layout.list_v,
new String[] { TAG_VER,TAG_NAME, TAG_API }, new int[] {
R.id.name, R.id.api});
list.setAdapter(adapter);
;
search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
menu4_Fragment.this.getActivity().adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getActivity(), "You Clicked at " + oslist.get(position).get("AnlagenNr"), Toast.LENGTH_SHORT).show();
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
Nun der Fehler:
menu4_Fragment.this.getActivity().adapter.getFilter().filter(cs); ---> Can not resolve symbol 'adapter'
Ich weis einfach nicht mehr weiter -.-
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.