当我搜索任何文本时,我正在创建一个应用程序并使用搜索视图和自定义列表适配器然后它显示带有搜索文本的黑色对话框但是我想删除这个黑色对话框而另一个问题是当我选择任何记录时它根据原始列表选择记录请尽快帮助我。
private LayoutInflater inflater;
private TextView name_textView, f_name_textView, m_name_textView,
h_number_textView;
private ArrayList<SeccUserListAdapterBean> list;
private ArrayList<SeccUserListAdapterBean> list1;
public SeccUserListAdapter(Context context,
ArrayList<SeccUserListAdapterBean> list) {
super();
this.list = list;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null)
convertView = inflater.inflate(R.layout.seccuserlistlayout, null);
name_textView = (TextView) convertView.findViewById(R.id.textView1);
f_name_textView = (TextView) convertView.findViewById(R.id.textView2);
m_name_textView = (TextView) convertView.findViewById(R.id.textView3);
h_number_textView = (TextView) convertView.findViewById(R.id.textView4);
name_textView.setText(list.get(position).getBen_name());
f_name_textView.setText(list.get(position).getBen_fname());
m_name_textView.setText(list.get(position).getBen_gender());
h_number_textView.setText(list.get(position).getBen_house_no());
return convertView;
}
@Override
public Filter getFilter() {
// TODO Auto-generated method stub
return new Filter() {
@SuppressLint("DefaultLocale")
@Override
protected FilterResults performFiltering(CharSequence constraint) {
// TODO Auto-generated method stub
final FilterResults oReturn = new FilterResults();
final ArrayList<SeccUserListAdapterBean> results = new ArrayList<SeccUserListAdapterBean>();
if (list1 == null)
list1 = list;
if (constraint != null) {
if (list1 != null && list1.size() > 0) {
for (final SeccUserListAdapterBean family : list1) {
if (family
.getBen_name()
.toLowerCase()
.contains(
constraint.toString().toLowerCase()))
results.add(family);
}
}
oReturn.values = results;
}
return oReturn;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
// TODO Auto-generated method stub
list = (ArrayList<SeccUserListAdapterBean>) results.values;
notifyDataSetChanged();
}
};
答案 0 :(得分:0)
对于你问题的第二部分。您可以为列表视图设置单击侦听器并获取所选行的视图。然后将对象的位置传递给适配器的getItem(int position)
方法。
ListView lv = (ListView)findViewById(R.id.myList);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long i)
{
// Get the item here. use the adapter's getItem() method
YourObject obj = (YourObject) adapter.getItem(position);
// Do whatever with your object.
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
我认为你没有使用android SDK中的标准SearchView。如果使用不同的库,请参阅相关文档。