2016-05-14 57 views
0

你好,我是新的android 我在ListView中添加了一个搜索按钮,但我得到了一个错误Ca,你帮我解决了这个错误。如何在列表视图中添加搜索按钮?

编辑

错误cannot resolve symbol adapter 适配器在的getUser方法

使用列表适配器这是我的Java代码

UserFragment.java提前

public class UsersFragment extends Fragment implements ListView.OnItemClickListener { 
private String JSON_STRING; 
private ImageButton btn1; 
public static final String URL = "http://10.0.3.2/GetPHP/getuser.php"; 
public static final String TAG_JSON_ARRAY = "result"; 
// List view 
private ListView listView; 
// Search EditText 
EditText inputSearch; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootview = inflater.inflate(R.layout.fragment_users, container, false); 
    listView = (ListView) rootview.findViewById(R.id.listView); 
    inputSearch = (EditText) rootview.findViewById(R.id.inputSearch); 
    listView.setOnItemClickListener(this); 
    btn1=(ImageButton) rootview.findViewById(R.id.btn1); 
    inputSearch.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { 
      // When user changed the Text 
      (SimpleAdapter) UsersFragment .this.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 
     } 
    }); 
    getJSON(); 
    return rootview; 
} 

private void getuser(){ 
    JSONObject jsonObject = null; 
    ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String, String>>(); 
    try { 
     jsonObject = new JSONObject(JSON_STRING); 
     JSONArray result = jsonObject.getJSONArray(TAG_JSON_ARRAY); 

     for(int i = 0; i<result.length(); i++){ 
      JSONObject jo = result.getJSONObject(i); 
      String name = jo.getString("Nom"); 
      String ref = jo.getString("Reference"); 

      HashMap<String,String> users= new HashMap<>(); 

      users.put("name",name); 
      users.put("ref",ref); 
      list.add(users); 
     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    ListAdapter adapter = new SimpleAdapter(
      getActivity(), list, R.layout.list_row2, 
      new String[]{"name","ref"}, 
      new int[]{R.id.nom, R.id.email2}); 

    listView.setAdapter(adapter); 
} 
private void getJSON() { 
    class GetJSON extends AsyncTask<Void, Void, String> { 
     ProgressDialog loading; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      loading = ProgressDialog.show(getActivity(), "Téléchargement", "Veuillez patientez...", false, false); 
     } 
     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
      loading.dismiss(); 
      JSON_STRING = s; 
      getuser(); 
     } 
     @Override 
     protected String doInBackground(Void... params) { 
      RequestHandler rh = new RequestHandler(); 
      String s = rh.sendGetRequest(URL); 
      return s; 
     } 
    } 
    GetJSON gj = new GetJSON(); 
    gj.execute(); 
} 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Intent intent = new Intent(getActivity().getApplicationContext(), Viewuser.class); 
    HashMap<String, String> map = (HashMap) parent.getItemAtPosition(position); 
    String tid = map.get("ref").toString(); 
    intent.putExtra("ref", tid); 
    startActivity(intent); 
} 

感谢

+0

'adapter'是'SimpleAdapter'或'ArrayAdapter '??你的代码是令人困惑的.. –

+0

我的适配器是一个ListAdapter,但当我添加搜索按钮的代码inputSearch.addTextChangedListener(new TextWatcher(){从互联网我有一个错误,因为ListAdapter没有方法getFilter()。使用SimpleAdapter –

+0

请更新最近的代码,以逃避困惑.. !! –

回答

1
+0

谢谢,但我不能用它与我的代码上面我得到了很多错误不能解决方法initFilter(),符号适配器,客户端,数据,dataList,LOG。我可以替换它们吗?我需要你的帮助 –

+0

@LaraFab我更新了答案,我希望它有帮助。 – NawalSalameh

+0

我得到了这个错误'cann ot解决符号适配器' –

0

制作adapter一个全局变量将解决你的问题:

改变这样的代码:

public class UsersFragment extends Fragment implements ListView.OnItemClickListener { 
private String JSON_STRING; 
private ImageButton btn1; 

//Make the adapter GLOBAL 
ListAdapter adapter; 

public static final String URL = "http://10.0.3.2/GetPHP/getuser.php"; 
public static final String TAG_JSON_ARRAY = "result"; 
// List view 
private ListView listView; 
// Search EditText 
EditText inputSearch; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootview = inflater.inflate(R.layout.fragment_users, container, false); 
     listView = (ListView) rootview.findViewById(R.id.listView); 
     inputSearch = (EditText) rootview.findViewById(R.id.inputSearch); 
     listView.setOnItemClickListener(this); 
     btn1=(ImageButton) rootview.findViewById(R.id.btn1); 
     inputSearch.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { 
     // When user changed the Text 
     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 
    } 
    }); 
    getJSON(); 
    return rootview; 
} 

private void getuser(){ 
JSONObject jsonObject = null; 
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String, String>>(); 
try 
{ 
    jsonObject = new JSONObject(JSON_STRING); 
    JSONArray result = jsonObject.getJSONArray(TAG_JSON_ARRAY); 

    for(int i = 0; i<result.length(); i++){ 
     JSONObject jo = result.getJSONObject(i); 
     String name = jo.getString("Nom"); 
     String ref = jo.getString("Reference"); 

     HashMap<String,String> users= new HashMap<>(); 

     users.put("name",name); 
     users.put("ref",ref); 
     list.add(users); 
    } 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 

adapter = new SimpleAdapter(
     getActivity(), list, R.layout.list_row2, 
     new String[]{"name","ref"}, 
     new int[]{R.id.nom, R.id.email2}); 

listView.setAdapter(adapter); 
} 
private void getJSON() { 
class GetJSON extends AsyncTask<Void, Void, String> { 
    ProgressDialog loading; 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     loading = ProgressDialog.show(getActivity(), "Téléchargement", "Veuillez patientez...", false, false); 
    } 
    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
     loading.dismiss(); 
     JSON_STRING = s; 
     getuser(); 
    } 
    @Override 
    protected String doInBackground(Void... params) { 
     RequestHandler rh = new RequestHandler(); 
     String s = rh.sendGetRequest(URL); 
     return s; 
    } 
} 
GetJSON gj = new GetJSON(); 
gj.execute(); 
} 

说明:在你的代码中你使用的是本地 这意味着你不能使用相同的在onTextChanged()中设置过滤器。 这是你得到的原因无法解析适配器

+0

谢谢没有错误,但我的代码不会过滤根据编辑文字tayped中的字母列表视图 –

+0

你有不能解决错误,我认为?这是由我的答案解决.. !! ..你没有得到'不能解决您的当前代码错误'或你有没有试过我的答案? –

+0

是的我没有得到这个错误,但没有listview的filtring –

相关问题