Multiautocompletetextview工作不正常 [英] Multiautocompletetextview not working properly
问题描述
我使用multiautocomplete TextView的在我的应用程序,这是我与mutltiautocompletetextview使用的项目是JSON,现在,只要用户选择多个值,我需要得到该项目的ID我想是的,我能得到的ID第一个项目而已,..
我的回答
{
类别:
[
{
ID:4,
名:CAT1
},
{
ID:7
名:阿迪亚}
]
}
JsonParse.java
公共类JsonParse {
双current_latitude,current_longitude;
公共JsonParse(){}
公共JsonParse(双current_latitude,双current_longitude){
this.current_latitude = current_latitude;
this.current_longitude = current_longitude;
}
公开名单< SuggestGetSet> getParseJsonWCF(字符串SNAME)
{
清单< SuggestGetSet>的ListData =新的ArrayList< SuggestGetSet>();
尝试{
串临时= sName.replace(,%20);
URL = JS新的URL();
URLConnection的JC = js.openConnection();
读者的BufferedReader =新的BufferedReader(新的InputStreamReader(jc.getInputStream()));
串行= reader.readLine();
JSONObject的jsonResponse =新的JSONObject(线);
JSONArray jsonArray = jsonResponse.getJSONArray(类);
的for(int i = 0; I< jsonArray.length();我++){
的JSONObject R = jsonArray.getJSONObject(ⅰ);
ListData.add(新SuggestGetSet(r.getString(ID),r.getString(名称)));
}
}赶上(例外E1){
// TODO自动生成catch块
e1.printStackTrace();
}
返回的ListData; }
}
SuggestGetSet.java
公共类SuggestGetSet {
串ID,名称;
公共SuggestGetSet(ID字符串,字符串名称){
this.setId(ID);
this.setName(名);
}
公共字符串的getId(){
返回ID;
}公共无效SETID(字符串ID){
this.id = ID;
}公共字符串的getName(){
返回名称;
}公共无效setname可以(字符串名称){
this.name =名称;
} }
SuggetionAdapter.java
公共类SuggestionAdapter扩展ArrayAdapter<串GT; {
受保护的静态最后弦乐TAG =SuggestionAdapter;
私人列表<串GT;建议;
公共SuggestionAdapter(Activity上下文,弦乐nameFilter){
超(背景下,android.R.layout.simple_dropdown_item_1line);
建议=新的ArrayList<串GT;();
}@覆盖
公众诠释的getCount(){
返回suggestions.size();
}@覆盖
公共字符串的getItem(INT指数){
返回suggestions.get(索引);
}@覆盖
公共过滤用getFilter(){
过滤myFilter =新的过滤器(){
@覆盖
保护FilterResults performFiltering(CharSequence的约束){
FilterResults filterResults =新FilterResults();
JsonParse JP =新JsonParse();
如果(约束!= NULL){
清单< SuggestGetSet> new_suggestions = jp.getParseJsonWCF(constraint.toString());
suggestions.clear();
/ *的for(int i = 0; I< new_suggestions.size();我++){
suggestions.add(new_suggestions.get(ⅰ).getName());
} * / 的for(int i = 0; I< new_suggestions.size();我++){
字符串名称= new_suggestions.get(I).getName();
串ID = new_suggestions.get(ⅰ).getId();
的System.out.println(checis ID+ ID); 如果(name.contains(约束)){
suggestions.add(new_suggestions.get(ⅰ).getName());
}
} //现在分配值,并计算到FilterResults
//对象
filterResults.values =建议;
filterResults.count = suggestions.size();
}
返回filterResults;
} @覆盖
保护无效publishResults(CharSequence的约束实现的,
FilterResults结果){
如果(结果= NULL&放大器;!&安培; results.count大于0){
notifyDataSetChanged();
}其他{
notifyDataSetInvalidated();
}
}
};
返回myFilter;
}
}
MainActivity.java
JsonParse JP =新JsonParse();
清单<&的NameValuePair GT; PARAMS =新的ArrayList<&的NameValuePair GT;();
清单< SuggestGetSet>清单= jp.getParseJsonWCF(acTextView.getText()的toString());
的for(int i = 0; I<则为list.size();我++){
如果(list.get(I).getName()。等于(acTextView.getText()。的toString()))
params.add(新BasicNameValuePair(PARENTID,list.get(ⅰ).getId()));
的System.out.println(善有善报+参数);
。CATID = list.get(I).getId()的toString();
}
所以你需要充分catids,所以第一个变化CATID到数组或列表。
私人列表<串GT; CATID =新的ArrayList<串GT;();
然后更改您的code
字符串猫[] = acTextView.getText()的toString()分裂()。;
JsonParse JP =新JsonParse();
对于(字符串的猫:猫){
清单< SuggestGetSet>清单= jp.getParseJsonWCF(acTextView.getText()的toString());
的for(int i = 0; I<则为list.size();我++){
如果(list.get(ⅰ).getName()。等于(猫))
catid.add(list.get(ⅰ).getId()的toString());
//params.add(new BasicNameValuePair(PARENTID,list.get(ⅰ).getId()));
}
}
I am using multiautocomplete textview in my app,the items which I use with mutltiautocompletetextview is from json,now What I want is whenever user selects more than one value I need to get id of that item,I am able to get id of first item only,..
My response
{
"category":
[
{
"id":"4",
"name":"cat1"
},
{
"id":"7",
"name":"aditya"}
]
}
JsonParse.java
public class JsonParse {
double current_latitude,current_longitude;
public JsonParse(){}
public JsonParse(double current_latitude,double current_longitude){
this.current_latitude=current_latitude;
this.current_longitude=current_longitude;
}
public List<SuggestGetSet> getParseJsonWCF(String sName)
{
List<SuggestGetSet> ListData = new ArrayList<SuggestGetSet>();
try {
String temp=sName.replace(" ", "%20");
URL js = new URL("");
URLConnection jc = js.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream()));
String line = reader.readLine();
JSONObject jsonResponse = new JSONObject(line);
JSONArray jsonArray = jsonResponse.getJSONArray("category");
for(int i = 0; i < jsonArray.length(); i++){
JSONObject r = jsonArray.getJSONObject(i);
ListData.add(new SuggestGetSet(r.getString("id"),r.getString("name")));
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return ListData;
}
}
SuggestGetSet.java
public class SuggestGetSet {
String id,name;
public SuggestGetSet(String id, String name){
this.setId(id);
this.setName(name);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
SuggetionAdapter.java
public class SuggestionAdapter extends ArrayAdapter<String>{
protected static final String TAG = "SuggestionAdapter";
private List<String> suggestions;
public SuggestionAdapter(Activity context, String nameFilter) {
super(context, android.R.layout.simple_dropdown_item_1line);
suggestions = new ArrayList<String>();
}
@Override
public int getCount() {
return suggestions.size();
}
@Override
public String getItem(int index) {
return suggestions.get(index);
}
@Override
public Filter getFilter() {
Filter myFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
JsonParse jp=new JsonParse();
if (constraint != null) {
List<SuggestGetSet> new_suggestions =jp.getParseJsonWCF(constraint.toString());
suggestions.clear();
/*for (int i=0;i<new_suggestions.size();i++) {
suggestions.add(new_suggestions.get(i).getName());
}*/
for (int i=0;i<new_suggestions.size();i++) {
String name=new_suggestions.get(i).getName();
String id=new_suggestions.get(i).getId();
System.out.println("checis id"+id);
if(name.contains(constraint)){
suggestions.add(new_suggestions.get(i).getName());
}
}
// Now assign the values and count to the FilterResults
// object
filterResults.values = suggestions;
filterResults.count = suggestions.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence contraint,
FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
return myFilter;
}
}
MainActivity.java
JsonParse jp=new JsonParse();
List<NameValuePair> params = new ArrayList<NameValuePair>();
List<SuggestGetSet> list =jp.getParseJsonWCF(acTextView.getText().toString());
for(int i = 0;i<list.size();i++){
if(list.get(i).getName().equals(acTextView.getText().toString()))
params.add(new BasicNameValuePair("parentid",list.get(i).getId()));
System.out.println("what goes"+params);
catid=list.get(i).getId().toString();
}
so you need full catids, so first change catid to array or list.
private List<String> catid=new ArrayList<String>();
then change your code
String cats[]=acTextView.getText().toString().split(",");
JsonParse jp=new JsonParse();
for(String cat:cats){
List<SuggestGetSet> list =jp.getParseJsonWCF(acTextView.getText().toString());
for(int i = 0;i<list.size();i++){
if(list.get(i).getName().equals(cat))
catid.add(list.get(i).getId().toString());
//params.add(new BasicNameValuePair("parentid",list.get(i).getId()));
}
}
这篇关于Multiautocompletetextview工作不正常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!