当前位置:操作系统 > 安卓/Android >>

Listview复选框的选择

问题描述:

我创建了一个自定义的 listview,有 Image,Text 和 checkbox。如何检测是否选择或未选择复选框。我使用了 onItemClick() 但是没有被调用。我使用的正确吗?

[java]
class PInfo { 
    String appname = ""; 
    String pname = ""; 
    Drawable icon; 
 } 
public class InstalledApps extends Activity{ 
private static LayoutInflater inflater=null; 
private ListView listview; 
private Activity activity; 
List<PInfo> installedApps = new ArrayList<PInfo>(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub  
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.applist); 
    activity = this; 
    listview = (ListView)findViewById(R.id.listView1); 
    PackageManager pm = getPackageManager(); 
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); 
    for(ApplicationInfo app : packages) { 
        PInfo newInfo = new PInfo(); 
        newInfo.appname = (String) app.loadLabel(pm); 
        newInfo.pname = app.packageName; 
        //newInfo.icon = app.icon;  
        //Drawable dd = activity.getResources().getDrawable(app.icon);  
        newInfo.icon = app.loadIcon(getPackageManager()); 
        if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1) {         
            installedApps.add(newInfo); 
        } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) { 
            installedApps.add(newInfo); 
        } else { 
            installedApps.add(newInfo); 
        } 
    } 
    InstalledAppsAdapter iap = new InstalledAppsAdapter(this, installedApps); 
    listview.setAdapter(iap); 

  } 
class InstalledAppsAdapter extends BaseAdapter{ 
private Activity activity; 
private static LayoutInflater inflater=null; 
List<PInfo> installedApps = new ArrayList<PInfo>(); 
ListView listview;  
public InstalledAppsAdapter(Activity a, List<PInfo> b) { 
    // TODO Auto-generated constructor stub  
    installedApps = b; 
    activity = a; 
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    listview = (ListView)activity.findViewById(R.id.listView1); 
       //Here is where I have put it currently..  
    listview.setOnItemClickListener(new OnItemClickListener() { 
 
        @Override 
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
                long arg3) { 
            // TODO Auto-generated method stub  
            PInfo newInfo = (PInfo) listview.getItemAtPosition(arg2); 
            System.out.println(newInfo.appname); 
        } 
    }); 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub  
    return installedApps.size(); 

@Override 
public Object getItem(int arg0) { 
    // TODO Auto-generated method stub  
    return arg0; 

@Override 
public long getItemId(int arg0) { 
    // TODO Auto-generated method stub  
    return arg0; 

@Override 
public View getView(int arg0, View arg1, ViewGroup arg2) { 
    // TODO Auto-generated method stub  
    View  customView = inflater.inflate(R.layout.listrow, arg2,false); 
    ImageView iv = (ImageView)customView.findViewById(R.id.imageView1); 
    TextView tv= (TextView) customView.findViewById(R.id.textView2); 
    CheckBox cb= (CheckBox)customView.findViewById(R.id.checkBox1); 
    PInfo pinfo = installedApps.get(arg0); 
        tv.setText(""+pinfo.appname); 
        iv.setImageDrawable(pinfo.icon); 
    return customView; 

class PInfo {
    String appname = "";
    String pname = "";
    Drawable icon;
 }
public class InstalledApps extends Activity{
private static LayoutInflater inflater=null;
private ListView listview;
private Activity activity;
List<PInfo> installedApps = new ArrayList<PInfo>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.applist);
    activity = this;
    listview = (ListView)findViewById(R.id.listView1);
    PackageManager pm = getPackageManager();
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    for(ApplicationInfo app : packages) {
        PInfo newInfo = new PInfo();
        newInfo.appname = (String) app.loadLabel(pm);
        newInfo.pname = app.packageName;
        //newInfo.icon = app.icon;
        //Drawable dd = activity.getResources().getDrawable(app.icon);
        newInfo.icon = app.loadIcon(getPackageManager());
        if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1) {       
            installedApps.add(newInfo);
     

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,