简体   繁体   English

如何在我的操作栏中实现搜索?

[英]How can I implement search into my action bar?

My basic android app displays a list of all the installed apps on my phone. 我的基本Android应用程序显示我手机上所有已安装应用程序的列表。 I've looked on google for tutorials on how to do this but they're quite confusing. 我在谷歌上寻找关于如何做到这一点的教程,但是他们很混乱。 I want to add a feature to my action bar like Google has for their apps so I can search down the list for an app 我想在我的操作栏中添加一项功能,例如Google为其应用添加的功能,以便我可以在列表中搜索应用

public class HomeActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        setTitle("Apps");
        getActionBar();
        loadApps();
        loadListView();
        addClickListener();

    }

    private PackageManager manager;
    private List<AppDetail> apps;
    private void loadApps(){
        manager = getPackageManager();
        apps = new ArrayList<AppDetail>();

        Intent i = new Intent(Intent.ACTION_MAIN, null);
        i.addCategory(Intent.CATEGORY_LAUNCHER);

        List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0);
        for(ResolveInfo ri:availableActivities){
            AppDetail app = new AppDetail();
            app.label = ri.loadLabel(manager);
            app.name = ri.activityInfo.packageName;
            app.icon = ri.activityInfo.loadIcon(manager);
            apps.add(app);
        }
    }

    private ListView list;
    private void loadListView(){
        list = (ListView)findViewById(R.id.apps_list);

        ArrayAdapter<AppDetail> adapter = new ArrayAdapter<AppDetail>(this,
                R.layout.list_item,
                apps) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                if(convertView == null){
                    convertView = getLayoutInflater().inflate(R.layout.list_item, null);
                }

                ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
                appIcon.setImageDrawable(apps.get(position).icon);

                TextView appLabel = (TextView)convertView.findViewById(R.id.item_app_label);
                appLabel.setText(apps.get(position).label);



                return convertView;
            }
        };

        list.setAdapter(adapter);

    }

    private void addClickListener(){
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> av, View v, int pos,
                                    long id) {
                Intent i = manager.getLaunchIntentForPackage(apps.get(pos).name.toString());
                HomeActivity.this.startActivity(i);
            }
        });
    }

}

I've successfully followed this guide before. 我之前成功地遵循了这个指南。 It shows you how to set up the search interface. 它向您展示了如何设置搜索界面。

http://developer.android.com/guide/topics/search/search-dialog.html http://developer.android.com/guide/topics/search/search-dialog.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM