ArrayAdapter
을 확장하는 ListViewAdapter
을 사용하여 결과를 ListView
에 표시하고 있습니다. 출력을 표시하려면 ListView
에 3 TextView
이 있어야합니다. searchview를 구현하고 싶지만 검색 창에 입력하면 화면이 공백이됩니다. 어떻게 구현합니까? 나는 addTextChangedListener
도 EditText
를 사용하여 시도하지만 output.This 당신은 당신의 결과를 얻을 수있는 필터링 할 수있는 인터페이스를 구현할 필요가 여기 Activity
multicolum listview에 대한 searchview
searchView = (SearchView)findViewById(R.id.searchView);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
});
}
private void loadDescriptionList() {
final ProgressDialog progressDialog = new ProgressDialog(TestDetails.this);
progressDialog.setMessage("Loading Data...");
progressDialog.show();
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response)
{
progressDialog.dismiss();
try {
JSONObject obj = new JSONObject(response);
JSONArray heroArray = obj.getJSONArray("list");
for (int i = 0; i < heroArray.length(); i++) {
JSONObject heroObject = heroArray.getJSONObject(i);
TDescription hero = new TDescription(heroObject.getString("test_code"), heroObject.getString("test_description"),heroObject.getString("test_price"));
heroList.add(hero);
}
adapter = new ListViewAdapter(heroList, getApplicationContext());
listView.setAdapter(adapter);
} catch (JSONException e) {
progressDialog.dismiss();
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
LISTVIEWADAPTER.JAVA
public class ListViewAdapter extends ArrayAdapter<TDescription> {
private List<TDescription> heroList;
private Context mCtx;
Typeface typeface;
TextView rup;
public ListViewAdapter(List<TDescription> heroList, Context mCtx) {
super(mCtx, R.layout.list_items, heroList);
this.heroList = heroList;
this.mCtx = mCtx;
typeface = Typeface.createFromAsset(mCtx.getAssets(), "fontawesome-webfont.ttf");
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View listViewItem = inflater.inflate(R.layout.list_items, null, true);
TextView code = (TextView)listViewItem.findViewById(R.id.code);
TextView desc = (TextView)listViewItem.findViewById(R.id.desc);
TextView price = (TextView)listViewItem.findViewById(R.id.price);
rup = (TextView)listViewItem.findViewById(R.id.rupee);
rup.setTypeface(typeface);
TDescription hero = heroList.get(position);
code.setText(hero.getCode());
desc.setText(hero.getDesc());
price.setText(hero.getPrice());
return listViewItem;
}
이동에 따라 데이터를 필터링하고 자신의 논리 –
을 구현하는 것이 [링크] (HTTPS에 보라. co.kr/questions/24769257/custom-listview-adapter-with-filter-android) –