2016-04-16 35 views
0

私は、ユーザがいくつかのアプリケーションを機密として選択してロックするコードを書いています。私はandroid.R.layout.simple_list_item_multiple_choiceと呼ばれるAPI22から予め定義されたレイアウトを使用しています。これにはCheckedTextViewが含まれています。ユーザーが選択したアイテムを取得できません。私はListenerでいくつか試しましたが、希望の出力を得ることができませんでした。 私は進路を助けてください。Android:ListViewから選択項目を取得

SensitiveApps.java

package com.sr.droidlock; 

import android.content.Intent; 
import android.content.pm.ResolveInfo; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Switch; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 

public class SensitiveApps extends ActionBarActivity { 

    ListView listView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sensitive_apps); 

     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setIcon(R.drawable.sensitive); 

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

     final List pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0); 
     ArrayList<String> tasks = new ArrayList<String>(); 
     String title; 

     for (Object object : pkgAppsList) { 
      ResolveInfo info = (ResolveInfo) object; 
      title = (String) ((info != null) ? getBaseContext().getPackageManager().getApplicationLabel(info.activityInfo.applicationInfo) : "???"); 
      tasks.add(title); 
     } 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, tasks); 
     adapter.sort(new Comparator<String>() { 
      @Override 
      public int compare(String lhs, String rhs) { 
       return lhs.compareToIgnoreCase(rhs); 
      } 
     }); 
     listView = (ListView) findViewById(R.id.listView); 
     listView.setAdapter(adapter); 
     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

     listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       String str = listView.getItemAtPosition(position).toString(); 
       Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
       //Do nothing 
      } 
     }); 
    } 
} 
+0

'listView.setOnItemClickListener()'を使用してください –

答えて

1

が、これはあなたを助けることができるかもしれません。

int len = listView.getCount(); 
SparseBooleanArray checked = listView.getCheckedItemPositions(); 
for (int i = 0; i < len; i++) 
if (checked.get(i)) { 
String item = cont_list.get(i);/* do whatever you want with the checked item */ 
} 
+0

コード内で 'cont_list'とは何ですか? – SanketSB

+1

@ SanketSB237 'cont_list'あなたのコードの中の配列リストでなければならないのは、'タスク 'なので、' cont_list'ではなく 'tasks'です。 –

+0

はい 'cont_list'は自分のコードで' tasks'を意味していました。出来た。あなたの助けをありがとう@DevendraSingh&@jaydroider – SanketSB

関連する問題