दोस्तों मुझे कुछ मदद की ज़रूरत है। मैं अपनी परियोजना में एक खोज दृश्य को लागू करने की कोशिश कर रहा हूं। लेकिन मेरे प्रोजेक्ट में एक कस्टम एडाप्टर के साथ एक सूचीदृश्य है .. मैंने कई खोजे हैं साइटों लेकिन सभी एक arrayadapter..Lets का उपयोग कर कार्यान्वित उदाहरण कहते हैं कि मैं एक कर्मचारी वर्ग है और यह उनके नाम केवल का उपयोग कर कर्मचारियों को फिल्टर करने के लिए मैं नाम और उम्र fields..How शामिल ..खोज दृश्य में सूची दृश्य कस्टम एडाप्टर
public class MainActivity extends Activity implements SearchView.OnQueryTextListener
{
SearchView mSearchView;
ListView mListView;
//String mStrings[]= {"abc","def","efg","ghi","ijk","apple","agxhsdgc","abbbcc"};
ArrayList<Employee> emp_list=null;
EmployeeAdapter emp_adapter=null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSearchView=(SearchView) findViewById(R.id.searchView1);
mListView=(ListView) findViewById(R.id.listView1);
emp_list=new ArrayList<Employee>();
emp_list.add(new Employee("ABC", 24));
emp_list.add(new Employee("ACB", 24));
emp_list.add(new Employee("BVF", 28));
emp_list.add(new Employee("BRT", 28));
emp_list.add(new Employee("ANM", 23));
emp_adapter=new EmployeeAdapter(MainActivity.this, emp_list);
mListView.setAdapter(emp_adapter);
// mListView.setAdapter(new ArrayAdapter<String>(this,
// android.R.layout.simple_list_item_1,
// mStrings));
mListView.setTextFilterEnabled(true);
setupSearchView();
}
private void setupSearchView()
{
mSearchView.setIconifiedByDefault(false);
mSearchView.setOnQueryTextListener(this);
mSearchView.setSubmitButtonEnabled(true);
mSearchView.setQueryHint("Search Here");
}
@Override
public boolean onQueryTextChange(String newText)
{
if (TextUtils.isEmpty(newText.toString())) {
mListView.clearTextFilter();
} else {
mListView.setFilterText(newText.toString());
}
return true;
}
@Override
public boolean onQueryTextSubmit(String query)
{
return false;
}
}
और यह मेरा है एडाप्टर क्लास जो बेसएडाप्टर को बढ़ाती है ..
public class EmployeeAdapter extends BaseAdapter {
Context ctx;
ArrayList<Employee> emp_list;
LayoutInflater linf=null;
EmployeeHolder holder=null;
public EmployeeAdapter(Context ctx, ArrayList<Employee> emp_list) {
super();
this.ctx = ctx;
this.emp_list = emp_list;
linf=(LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public class EmployeeHolder
{
TextView name;
TextView age;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return emp_list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return emp_list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView==null)
{
convertView=linf.inflate(R.layout.row, parent, false);
holder=new EmployeeHolder();
holder.name=(TextView) convertView.findViewById(R.id.name);
holder.age=(TextView) convertView.findViewById(R.id.age);
convertView.setTag(holder);
}
else
{
holder=(EmployeeHolder) convertView.getTag();
}
Employee e=(Employee) getItem(position);
holder.name.setText(e.getName());
holder.age.setText(String.valueOf(e.getAge()));
return convertView;
}
}
था अग्रिम में anks ..
@Haresh: मेरे मामले में imageView उपयोग कर रहा हूँ यह संभव YTO फिल्टर है – user3265781
लेकिन फ़िल्टरिंग सूची में आइटम पर क्लिक करने पर फ़िल्टर करने के बाद एक समस्या है, फिर भी यह मूल सूची से आइटम खोलता है। मैं googled और समाधान मिला लेकिन मेरे मामले के लिए हल करने में सक्षम नहीं है। –
आपको बहुत बहुत धन्यवाद। यह मेरा दिन बचाया। – Irfan