【问题标题】:Android getting packageName from OnItemClickListenerAndroid 从 OnItemClickListener 获取 packageName
【发布时间】:2013-02-09 15:40:36
【问题描述】:

我将应用标签放入 ListView。我想从 OnItemClickListener 获取 packageName (com.blabla.blabla)。我该怎么做?我的代码在这里:

uygList = new ArrayList<String>();

final PackageManager pm = getPackageManager();
List<ApplicationInfo> paketler = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo paketBilgi : paketler) {

    if (paketBilgi.packageName.equals(c.getString(0))) {

        uygList.add(paketBilgi.loadLabel(pm).toString());

        if (sayi<c.getCount()-1) {
            sayi++;
            c.moveToNext();
        }

    }

}

lv.setAdapter(new ArrayAdapter<String>(Uygulamalar.this, android.R.layout.simple_list_item_1, uygList));

lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {

        // I want to get the packageName that selected from ListView like (com.blabla.blabla)

    }
});

【问题讨论】:

    标签: android listview package


    【解决方案1】:

    你可以用这个:

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
                for (ApplicationInfo paketBilgi : paketler) {
                    String s = paketBilgi.loadLabel(pm).toString();
                    if(s.equals(uygList.get(pos))){
                        String packageName = paketBilgi.packageName;
                    }
                }
            }
        });
    
    But if 2 apps have same label there will be problem so it would be better if you can use   another list and store the package names and use it.
    
    final List<String> packageNames = new Arraylist<String>();
    
    uygList.add(paketBilgi.loadLabel(pm).toString()); 
    packageNames.add(paketBilgi.packageName);
    
    lv.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
            String packageName =  packageNames.get(pos);
        // I want to get the packageName that selected from ListView like (com.blabla.blabla)
        }
    });
    

    【讨论】:

      【解决方案2】:

      public void onItemClick(AdapterView parent, View view, int pos, long id) {

          // I want to get the packageName that selected from ListView like (com.blabla.blabla)
      
      }
      

      param pos 是 uygList 中的位置

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多