0

私は現在、携帯電話にインストールされているすべてのアプリを一覧表示するAndroidプロジェクトに取り組んでいます。ユーザーがクリックすると、後でアプリを起動できるようにパッケージ名が提供されることになっています。現時点ではパッケージ名を次の行に格納していますが、パッケージ名だけを知る必要がないため、アプリケーション名だけを知っている必要があるため、混乱する可能性があると思います。

したがって、ユーザーがアプリ名を選択したときに取得できる(TextViewとImageViewを備えたカスタムアダプターを使用して)ListView内にパッケージ名を保存する方法はありますか。

あなたが提供できるどんな助けにも感謝します。

4

2 に答える 2

2

1つの方法は、seTag(オブジェクトタグ)またはsetTag(intキー、オブジェクトタグ)を使用して、この追加情報を次のようなTextViewビューとともに保存することです。View

TextView tv = findViewById(R.id.textview);
tv.setTag(<package_name_string>);

tv.getTag(); // to get the value.

他のアプローチは、その情報を別の場所に保存し、ListAdapterを介してアクセスできることを確認することです。

于 2012-06-17T23:18:10.340 に答える
0

したがって、ユーザーがアプリ名を選択したときに取得できる(TextViewとImageViewを備えたカスタムアダプターを使用して)ListView内にパッケージ名を保存する方法はありますか。

データはすでにカスタムアダプタにあります。このサンプルプロジェクトのように、あなたはおそらくあなたが戻ってきたArrayAdapter上でを使用しています:List<ResolveInfo>queryIntentActivities()

List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0);

Collections.sort(launchables, new ResolveInfo.DisplayNameComparator(pm)); 

adapter=new AppAdapter(pm, launchables);

(ここでAppAdapter extends ArrayAdapter<ResolveInfo>

その場合、アダプターからアプリを起動するために必要な情報を取得します。

  @Override
  protected void onListItemClick(ListView l, View v,
                                 int position, long id) {
    ResolveInfo launchable=adapter.getItem(position);
    ActivityInfo activity=launchable.activityInfo;
    ComponentName name=new ComponentName(activity.applicationInfo.packageName,
                                         activity.name);
    Intent i=new Intent(Intent.ACTION_MAIN);

    i.addCategory(Intent.CATEGORY_LAUNCHER);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
                Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
    i.setComponent(name);

    startActivity(i);    
  }
于 2012-06-17T23:17:28.557 に答える