列表视图,列表<applicationinfo> ...通过操作栏搜索</applicationinfo>搜索列表

时间:2014-09-12 08:16:48

标签: android android-listview android-actionbar android-search

我是Android开发新手,遇到麻烦,真需要帮助.. 请在发布建议链接前阅读.. 我正在开发一个演示应用程序,显示已安装的应用程序,包括系虽然我完成了大部分工作,但我无法使 ActionBar搜索选项工作..基本上我想搜索/过滤安装的应用列表,如图像在此示例中显示 - &gt;链接:http://www.androidhub4you.com/2014/04/android-action-bar-search-inside.html

我通过stackoverflow看了很多例子,例如使用searchview,在操作栏中使用edititext,使用过滤器,在developer.android网站上创建一个不同的可搜索的xml和活动文件来实现搜索,但只是在我的活动代码中混淆实现它。 哪个是真正的问题 - 在我的代码中实现示例代码逻辑

代码

我在下面显示的主Activity_main.xml文件中使用了Listview

activity_main.xml中----

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:animateLayoutChanges="true">

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:divider="#848484"
    android:dividerHeight="1dp"
    android:animateLayoutChanges="true"
    android:listSelector="@drawable/listview_selector"
    android:textFilterEnabled="true"
    />

我需要更改此 - &gt;&gt;&gt; android:id =“@ android:id / list” - to - android:id =“@ + id / list” 在活动文件中使用?

menu.xml文件

<item android:id="@+id/menu_Action_Search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      android:showAsAction="collapseActionView|always"
      android:actionViewClass="android.widget.SearchView"
      />

   <item
    android:id="@+id/menu_Sort_By_Size"
    android:orderInCategory="100"
    android:icon="@drawable/ic_action_sort_by_size"
    android:showAsAction="always|withText"
    android:title="@string/action_about"/>

两个活动文件 第一 **已安装应用的主要活动 - ** 我使用List列出应用程序 使用ApplicationAdaptor作为适配器 和包管理器

private PackageManager packageManager = null;
private List<ApplicationInfo> applist = null;
private ApplicationAdapter listadaptor = null;

这是OnCreate()...

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    packageManager = getPackageManager();

    new LoadApplications().execute();

}

实现了扩展AsyncTask的onListItemClick和LoadApplication

第二个活动文件

哪个是适配器活动。它的代码部分。

public class ApplicationAdapter extends ArrayAdapter<ApplicationInfo> {
private List<ApplicationInfo> appsList = null;
private Context context;
private PackageManager packageManager;
//private int isChecked;

public ApplicationAdapter(Context context, int textViewResourceId,
        List<ApplicationInfo> appsList) {
    super(context, textViewResourceId, appsList);
    this.context = context;
    this.appsList = appsList;
    packageManager = context.getPackageManager();
}

developer.android网站上的可搜索方法

Searchable.xml

<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
android:label="@string/app_name"
android:hint="@string/search_hint" 
>

SearchableActivity

public class SearchableActivity extends ListActivity{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.xml.searchable);

    handleIntent(getIntent());

}

@Override
protected void onNewIntent(Intent intent) {

    handleIntent(intent);
}


private void handleIntent(Intent intent) {

    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        //use the query to search your data somehow
        doMySearch(query);

    }
}


private void doMySearch(String queryString){
    /*ListView appList = (ListView)findViewById(android.R.id.list);
    appList.setAdapter(null);
    //ArrayAdapter<ApplicationInfo> listadaptor = new ArrayAdapter(getApplicationContext(),R.layout.snippet_list_row, appList);

    ApplicationAdapter listadaptor = new ApplicationAdapter(getApplicationContext(), R.layout.snippet_list_row, appsList)*/


}   

}

AndroidManifest.xm

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.listapps"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="19" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name">
    <activity
        android:name="com.example.listapps.AllApps"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <intent-filter >
         <action android:name="android.intent.action.VIEW" />
      </intent-filter> 
        <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>
    </activity>

</application>

我需要一些帮助才能搜索/过滤列表的ListView ..请帮助因为我现在几天都陷入了困惑。

由于这是我在 Stackoverflow 社区中的第一个问题,我试图尽可能详细地解释我的问题,所以请放轻松我。 任何积分或说明都会非常有用。

由于

0 个答案:

没有答案