【发布时间】:2017-08-16 22:27:51
【问题描述】:
嗨,我有一个自定义列表视图,但我无法编写正确的方法来仅在 CustomListView 中过滤/搜索特定的人名(基本上我是从 JSON 获取这个并存储在 ArrayList 中)...请任何人帮助我在 CustomListViewAdapter.java 中使用此方法过滤器
这是我的 Main_Activity.Java 代码
array111.add(new AshTable(test1, test2, test3, test4, test5, test6, test7, test8, test9, test10, test11, test12, test13, test14, test15, test16, test17, test18, test19, test20, test21, test22, test23, test24, test25, test26, test27, test28, test29, test30, test31, test32, test33, test34, test35, test36, test37, test38, test39, test40, test41, test42));
}
} catch (JSONException e) {
e.printStackTrace();
}
final CustomListViewAdapter adapter = new CustomListViewAdapter(getActivity(), R.layout.home_list_view, array111);
lstv11.setAdapter(adapter);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
String text = inputSearch.getText().toString().toLowerCase(Locale.getDefault());
adapter.filter(text);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
});
mSwipeRefreshLayout.setRefreshing(false);
}
}
这是我的 CustomListViewAdapter.java 代码
public class CustomListViewAdapter extends ArrayAdapter implements Filterable {
ArrayList<AshTable> prod;
Context context;
int resource;
public CustomListViewAdapter(Context context, int resource, ArrayList<AshTable> prod) {
super(context, resource, prod);
this.context=context;
this.resource=resource;
this.prod=prod;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
if(convertView==null){
LayoutInflater layoutInflater=(LayoutInflater)getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView=layoutInflater.inflate(R.layout.list_view,null,true);
}
AshTable pro=getItem(position);
final String st1=pro.getCompname();
final String st2=pro.getPersonname();
final String st3=pro.getAddress();
final String st4=pro.getMailid();
final String st5=pro.getMob1();
final String st6=pro.getMob2();
final String st7=pro.getShowname();
final String st8=pro.getDispatchdate();
final String st9=pro.getDispatchtime();
final String st10=pro.getStatedate();
final String st11=pro.getStarttime();
final String st12=pro.getSetupdate();
final String st13=pro.getSetuptime();
final String st14=pro.getEnddate();
final String st15=pro.getEndtime();
final String st16=pro.getDismanteldate();
final String st17=pro.getDismanteltime();
final String st18=pro.getVenu();
final String st19=pro.getVenuaddress();
final String st20=pro.getBoardsize();
final String st21=pro.getOverallsqft();
final String st22=pro.getRatepersqft();
final String st23=pro.getTotalamt();
final String st24=pro.getTransport();
final String st25=pro.getStage();
final String st26=pro.getPower();
final String st27=pro.getOthercost1();
final String st28=pro.getOthercost2();
final String st29=pro.getGrossamt();
final String st30=pro.getBillrequired();
final String st31=pro.getBillinnameof();
final String st32=pro.getServicetax();
final String st33=pro.getTotalamt2();
final String st34=pro.getAdvanceamt();
final String st35=pro.getCreditperiod();
final String st36=pro.getPhotoname();
final String st37=pro.getPhotomob();
final String st38=pro.getPhotoemail();
final String st39=pro.getMarketingname();
final String st40=pro.getRemark();
TextView txt1=(TextView)convertView.findViewById(R.id.textView11);
txt1.setText(pro.getPersonname());
TextView txt2=(TextView)convertView.findViewById(R.id.textView22);
txt2.setText(pro.getMob1());
TextView txt3=(TextView)convertView.findViewById(R.id.textView33);
txt3.setText(pro.getShowname());
TextView txt5=(TextView)convertView.findViewById(R.id.textView44);
txt5.setText(pro.getStatedate());
TextView txt4=(TextView)convertView.findViewById(R.id.textView6);
txt4.setText(pro.getEnddate());
TextView txt6=(TextView)convertView.findViewById(R.id.textView55);
txt6.setText(pro.getBoardsize());
TextView txt7=(TextView)convertView.findViewById(R.id.teextView);
txt7.setText("( "+pro.getCompname()+" )");
Button imgb=(Button) convertView.findViewById(R.id.imageButton2);
imgb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent().setClass(getContext(), Full_info_page.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.putExtra("name1", String.valueOf(st1));
intent.putExtra("name2", String.valueOf(st2));
intent.putExtra("name3", String.valueOf(st3));
intent.putExtra("name4", String.valueOf(st4));
intent.putExtra("name5", String.valueOf(st5));
intent.putExtra("name6", String.valueOf(st6));
intent.putExtra("name7", String.valueOf(st7));
intent.putExtra("name8", String.valueOf(st8));
intent.putExtra("name9", String.valueOf(st9));
intent.putExtra("name10", String.valueOf(st10));
intent.putExtra("name11", String.valueOf(st11));
intent.putExtra("name12", String.valueOf(st12));
intent.putExtra("name13", String.valueOf(st13));
intent.putExtra("name14", String.valueOf(st14));
intent.putExtra("name15", String.valueOf(st15));
intent.putExtra("name16", String.valueOf(st16));
intent.putExtra("name17", String.valueOf(st17));
intent.putExtra("name18", String.valueOf(st18));
intent.putExtra("name19", String.valueOf(st19));
intent.putExtra("name20", String.valueOf(st20));
intent.putExtra("name21", String.valueOf(st21));
intent.putExtra("name22", String.valueOf(st22));
intent.putExtra("name23", String.valueOf(st23));
intent.putExtra("name24", String.valueOf(st24));
intent.putExtra("name25", String.valueOf(st25));
intent.putExtra("name26", String.valueOf(st26));
intent.putExtra("name27", String.valueOf(st27));
intent.putExtra("name28", String.valueOf(st28));
intent.putExtra("name29", String.valueOf(st29));
intent.putExtra("name30", String.valueOf(st30));
intent.putExtra("name31", String.valueOf(st31));
intent.putExtra("name32", String.valueOf(st32));
intent.putExtra("name33", String.valueOf(st33));
intent.putExtra("name34", String.valueOf(st34));
intent.putExtra("name35", String.valueOf(st35));
intent.putExtra("name36", String.valueOf(st36));
intent.putExtra("name37", String.valueOf(st37));
intent.putExtra("name38", String.valueOf(st38));
intent.putExtra("name39", String.valueOf(st39));
intent.putExtra("name40", String.valueOf(st40));
context.startActivity(intent);
}
});
return convertView;
}
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
if (charText.length() == 0) {
} else {
}
notifyDataSetChanged();
}
}
请有人帮我用这个方法过滤来只过滤人名或日期....在此先感谢您
【问题讨论】:
-
你能澄清你的问题吗?您是要返回仅包含人名的列表还是仅包含一个人的列表?我对您希望过滤后的列表是什么样子感到有些困惑。
-
就像搜索字段选项的工作方式一样,如果我输入字母 p,我希望所有列表视图都提供该名称(如 Parrot、Professor、Player....)
标签: android custom-lists searchfiltercollection