1
MainActivitycode過濾列表項的標籤片段
public class MainActivity extends ActionBarActivity {
// Declaring Your View and Variables
Toolbar toolbar;
ViewPager pager;
ViewPagerAdapter adapter;
SlidingTabLayout tabs;
Tab1 tab1obj=new Tab1();
CharSequence Titles[]={"Locations","Lines"};
int Numboftabs =2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView inputSearch = (TextView) findViewById(R.id.inputSearch);
// Creating The Toolbar and setting it as the Toolbar for the activity
inputSearch.setHint("Where do you want to go?");
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
// Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs.
adapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs);
// Assigning ViewPager View and setting the adapter
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==0)
inputSearch.setHint("Where do you want to go?");
else
inputSearch.setHint("Search for bus route lines");
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
// Assiging the Sliding Tab Layout View
tabs = (SlidingTabLayout) findViewById(R.id.tabs);
tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width
// Setting Custom Color for the Scroll bar indicator of the Tab View
tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return getResources().getColor(R.color.tabsScrollColor);
}
});
// Setting the ViewPager For the SlidingTabsLayout
tabs.setViewPager(pager);
}
}
TAB1代碼
public class Tab1 extends Fragment {
private ListView mListView;
private View rootView;
private ListviewContactAdapter adapter;
private ArrayList<ListviewContactItem> listContact;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab1, container, false);
mListView = (ListView) rootView.findViewById(R.id.list);
listContact = GetlistContact();
adapter=new ListviewContactAdapter(getActivity(), listContact);
mListView.setAdapter(adapter);
return rootView;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
private ArrayList<ListviewContactItem> GetlistContact(){
ArrayList<ListviewContactItem> contactlist = new ArrayList<ListviewContactItem>();
ListviewContactItem contact = new ListviewContactItem();
contact.setPickUpPoint("xyz");
contact.setArea("xyz City");
contact.setLandmark("xyz xyz");
contact.setStreetName("xyz Road");
contactlist.add(contact);
contact = new ListviewContactItem();
contact.setPickUpPoint("xyz");
contact.setArea("xyz City");
contact.setLandmark("xyz xyz");
contact.setStreetName("xyz Road");
contactlist.add(contact);
contact = new ListviewContactItem();
contact.setPickUpPoint("vxyz");
contact.setArea("xyz City");
contact.setLandmark("near xyz");
contact.setStreetName("xyz Road");
contactlist.add(contact);
}
}
CustomAdapter代碼
public class ListviewContactAdapter extends BaseAdapter implements Filterable {
private static ArrayList<ListviewContactItem> listContact=null;
private static ArrayList<ListviewContactItem> originaldata=null;
private LayoutInflater mInflater;
private Context context;
public ListviewContactAdapter(Context photosFragment, ArrayList<ListviewContactItem> results){
listContact = results;
originaldata=results;
// mInflater = LayoutInflater.from(photosFragment);
this.context=photosFragment;
this.originaldata = new ArrayList<ListviewContactItem>();
this.originaldata.addAll(results);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listContact.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return listContact.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if(convertView == null){
convertView = mInflater.inflate(R.layout.pickup_point_list_layout, null);
holder = new ViewHolder();
holder.txtpickuppoint = (TextView) convertView.findViewById(R.id.rd_header_text);
holder.txtarea = (TextView) convertView.findViewById(R.id.area);
holder.txtlandmark = (TextView) convertView.findViewById(R.id.landmark);
holder.txtstreetname = (TextView) convertView.findViewById(R.id.streetname);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtpickuppoint.setText(listContact.get(position).getPickUpPoint());
holder.txtarea.setText(listContact.get(position).getArea());
holder.txtlandmark.setText(listContact.get(position).getLandmark());
holder.txtstreetname.setText(listContact.get(position).getStreetName());
return convertView;
}
static class ViewHolder{
TextView txtpickuppoint, txtarea,txtlandmark,txtstreetname;
}
}
現在我想上實現搜索過濾器使用操作欄中的編輯文本顯示在選項卡片段中的列表視圖。請指導我如何做到這一點。只要用戶輸入文本,列表就應該開始顯示已過濾的項目。