我用EditText上进行搜索表单 JSON
URL DATAS,我给搜索领域。搜索 EDITTEXT
每个字母型过滤列表视图
,在同一时间列表视图
重装,如果的EditText
空显示所有当前列表。如何在请帮我...
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.electronic_main);
搜索=(EditText上)findViewById(R.id.text_search);
列表视图=(ListView控件)findViewById(R.id.listview);
search.addTextChangedListener(新TextWatcher(){
@覆盖
公共无效beforeTextChanged(CharSequence中,诠释开始,诠释计数,之后INT){
}
@覆盖
公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,诠释计数){
ArrayList的< HashMap的<字符串,字符串>> arrayTemplist =新的ArrayList< HashMap的<字符串,字符串>>();
。串searchString = search.getText()的toString()与toLowerCase(Locale.getDefault());
listview.setTextFilterEnabled(真正的);
的for(int i = 0; I< arraylist.size();我++){
字符串currentString = arraylist.get(I)获得(Electronic.WORKERNAME);
字符串currentPlaceString = arraylist.get(I)获得(Electronic.LOCATION);
字符串currentShopString = arraylist.get(I)获得(Electronic.SHOPNAME);
如果(searchString.equalsIgnoreCase(currentString)||
searchString.equalsIgnoreCase(currentShopString)||
searchString.equalsIgnoreCase(currentPlaceString)){
arrayTemplist.add(arraylist.get(ⅰ));
}
}
适配器=新ElectronicAdapter(Electronic.this,arrayTemplist);
listview.setAdapter(适配器);
adapter.notifyDataSetChanged();
}
@覆盖
公共无效afterTextChanged(编辑S){
adapter.notifyDataSetChanged();
}
});
布尔isInternet present = cd.isConnectingToInternet(); // 对或错
如果(isInternet present){
新DownloadJSON()执行();
} 其他 {
意图失去了=新的意图(Electronic.this,NetConnection.class);
startActivity(丢失);
}
}
私有类DownloadJSON扩展的AsyncTask<虚空,虚空,布尔> {
@覆盖
在preExecute保护无效(){
super.on preExecute();
mProgressDialog =新ProgressDialog(Electronic.this);
mProgressDialog.setMessage(载入中...);
mProgressDialog.setIndeterminate(假);
mProgressDialog.show();
}
@覆盖
保护布尔doInBackground(空... PARAMS){
ArrayList的=新的ArrayList< HashMap的<字符串,字符串>>();
的JSONObject = JSONfunctions
.getJSONfromURL(http://beta.json-generator.com/api/json/get/D0_dGQT);
尝试 {
jsonarray = jsonobject.getJSONArray(普电子);
的for(int i = 0; I< jsonarray.length();我++){
HashMap的<字符串,字符串>图=新的HashMap<字符串,字符串>();
的JSONObject = jsonarray.getJSONObject(ⅰ);
map.put(workername,jsonobject.getString(workername));
map.put(SHOPNAME,jsonobject.getString(SHOPNAME));
map.put(经验,jsonobject.getString(经验));
map.put(票价,jsonobject.getString(收费));
map.put(位置,jsonobject.getString(位置));
map.put(等级,jsonobject.getString(等级));
map.put(地址,jsonobject.getString(地址));
map.put(workerimage,jsonobject.getString(workerimage));
map.put(shopphoto,jsonobject.getString(shopphoto));
map.put(细胞,jsonobject.getString(小区));
arraylist.add(图)
}
}赶上(JSONException E){
e.printStackTrace();
}
返回true;
}
@覆盖
保护无效onPostExecute(布尔ARG){
列表视图=(ListView控件)findViewById(R.id.listview);
适配器=新ElectronicAdapter(Electronic.this,ArrayList的);
listview.setAdapter(适配器);
mProgressDialog.dismiss();
}
}
}
解决方案
搜索=(EditText上)findViewById(R.id.serach);
列表视图=(ListView控件)findViewById(R.id.listview);
listview.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>为arg0,查看ARG1,INT ARG2,
长ARG3){
// TODO自动生成方法存根
。字符串GH = listview.getTextFilter()的toString();
text.setText(GH);
}
});
listview.setTextFilterEnabled(真正的);
search.addTextChangedListener(新TextWatcher(){
@覆盖
公共无效onTextChanged(CharSequence的arg0中,诠释ARG1,诠释ARG2,诠释ARG3){
// TODO自动生成方法存根
。串searchString = search.getText()的toString()与toLowerCase(Locale.getDefault());
Log.d(@ w2w2w2w,+ searchString);
INT RealText文件= searchString.length();
arrayTemplist.clear();
的for(int i = 0; I< arraylist.size();我++){
。字符串currentString = arraylist.get(I)获得(姓名)的toString();
。字符串currentPlaceString = arraylist.get(I)获得(城市)的toString();
。字符串currentShopString = arraylist.get(I)获得(landtype)的toString();
if(realtext<=currentString.length()&&realtext<=currentPlaceString.length()&&realtext<=currentShopString.length())
{
如果(searchString.equalsIgnoreCase(currentString.substring(0,RealText文件))||
searchString.equalsIgnoreCase(currentShopString.substring(0,RealText文件))||
searchString.equalsIgnoreCase(currentPlaceString.substring(0,RealText文件))){
arrayTemplist.add(arraylist.get(ⅰ));
适配器=新ListViewAdapter(Edit.this,arrayTemplist);
listview.setAdapter(适配器);
}
}
其他{
adapter.notifyDataSetChanged();
}
}}
@覆盖
公共无效beforeTextChanged(CharSequence的arg0中,诠释ARG1,INT ARG2,
INT ARG3){
// TODO自动生成方法存根
}
@覆盖
公共无效afterTextChanged(编辑为arg0){
// TODO自动生成方法存根
}
});
//执行DownloadJSON的AsyncTask
}
am using edittext for search form JSON
url datas, i give search field. search each letter type on editText
filter the listview
, at same time listview
reload, if edittext
empty show all current list. how to that please help me...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.electronic_main);
search = (EditText) findViewById(R.id.text_search);
listview = (ListView) findViewById(R.id.listview);
search.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) {
ArrayList<HashMap<String, String>> arrayTemplist = new ArrayList<HashMap<String, String>>();
String searchString = search.getText().toString().toLowerCase(Locale.getDefault());
listview.setTextFilterEnabled(true);
for (int i = 0; i < arraylist.size(); i++) {
String currentString = arraylist.get(i).get(Electronic.WORKERNAME);
String currentPlaceString = arraylist.get(i).get(Electronic.LOCATION);
String currentShopString = arraylist.get(i).get(Electronic.SHOPNAME);
if (searchString.equalsIgnoreCase(currentString) ||
searchString.equalsIgnoreCase(currentShopString) ||
searchString.equalsIgnoreCase(currentPlaceString)) {
arrayTemplist.add(arraylist.get(i));
}
}
adapter = new ElectronicAdapter(Electronic.this, arrayTemplist);
listview.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void afterTextChanged(Editable s) {
adapter.notifyDataSetChanged();
}
});
Boolean isInternetPresent = cd.isConnectingToInternet(); // true or false
if (isInternetPresent) {
new DownloadJSON().execute();
} else {
Intent lost = new Intent(Electronic.this, NetConnection.class);
startActivity(lost);
}
}
private class DownloadJSON extends AsyncTask<Void, Void, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(Electronic.this);
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Boolean doInBackground(Void... params) {
arraylist = new ArrayList<HashMap<String, String>>();
jsonobject = JSONfunctions
.getJSONfromURL("http://beta.json-generator.com/api/json/get/D0_dGQT");
try {
jsonarray = jsonobject.getJSONArray("eletronics");
for (int i = 0; i < jsonarray.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
jsonobject = jsonarray.getJSONObject(i);
map.put("workername", jsonobject.getString("workername"));
map.put("shopname", jsonobject.getString("shopname"));
map.put("experience", jsonobject.getString("experience"));
map.put("fare", jsonobject.getString("fare"));
map.put("location", jsonobject.getString("location"));
map.put("Rating", jsonobject.getString("Rating"));
map.put("address", jsonobject.getString("address"));
map.put("workerimage", jsonobject.getString("workerimage"));
map.put("shopphoto", jsonobject.getString("shopphoto"));
map.put("cell", jsonobject.getString("cell"));
arraylist.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
return true;
}
@Override
protected void onPostExecute(Boolean arg) {
listview = (ListView) findViewById(R.id.listview);
adapter = new ElectronicAdapter(Electronic.this, arraylist);
listview.setAdapter(adapter);
mProgressDialog.dismiss();
}
}
}
解决方案
search=(EditText)findViewById(R.id.serach);
listview=(ListView)findViewById(R.id.listview);
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
String gh = listview.getTextFilter().toString();
text.setText(gh);
}
});
listview.setTextFilterEnabled(true);
search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
String searchString = search.getText().toString().toLowerCase(Locale.getDefault());
Log.d("@w2w2w2w",""+searchString);
int realtext=searchString.length();
arrayTemplist.clear();
for (int i = 0; i < arraylist.size(); i++) {
String currentString = arraylist.get(i).get("Name").toString();
String currentPlaceString = arraylist.get(i).get("city").toString();
String currentShopString = arraylist.get(i).get("landtype").toString();
if(realtext<=currentString.length()&&realtext<=currentPlaceString.length()&&realtext<=currentShopString.length())
{
if (searchString.equalsIgnoreCase(currentString.substring(0,realtext)) ||
searchString.equalsIgnoreCase(currentShopString.substring(0,realtext)) ||
searchString.equalsIgnoreCase(currentPlaceString.substring(0,realtext))) {
arrayTemplist.add(arraylist.get(i));
adapter = new ListViewAdapter(Edit.this, arrayTemplist);
listview.setAdapter(adapter);
}
}
else{
adapter.notifyDataSetChanged();
}
}}
@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
}
});
// Execute DownloadJSON AsyncTask
}
上一篇:不能运行我在Android Studio的MQTT应用我在、Android、MQTT、Studio
下一篇:Facebook的SDK为Android GraphUserSDK、Facebook、GraphUser、Android