展会信息港展会大全

Listview复选框的选择
来源:互联网   发布日期:2015-11-26 13:59:41   浏览:3380次  

导读:问题描述:我创建了一个自定义的 listview,有 Image,Text 和 checkbox。如何检测是否选择或未选择复选框。我使用了 onItemClick() 但是没有被调用。我使用...

问题描述:

我创建了一个自定义的 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

ViewcustomView = 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);

} 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

ViewcustomView = 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;

}

}我要在哪里添加下面的代码(如果这是正确的listner)

[java]

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);

}

});

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);

}

});

解决方案:

在 getView 里面加入下面的代码:

[java]

@Override

public View getView(int arg0, View arg1, ViewGroup arg2) {

// TODO Auto-generated method stub

ViewcustomView = 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);

cb.setOnCheckedChangeListener(new OnCheckedChangeListener()

{

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)

{

if ( isChecked )

{

// perform logic

}

}

});

}

PInfo pinfo = installedApps.get(arg0);

tv.setText(""+pinfo.appname);

iv.setImageDrawable(pinfo.icon);

return customView;

}

@Override

public View getView(int arg0, View arg1, ViewGroup arg2) {

// TODO Auto-generated method stub

ViewcustomView = 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);

cb.setOnCheckedChangeListener(new OnCheckedChangeListener()

{

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)

{

if ( isChecked )

{

// perform logic

}

}

});

}

PInfo pinfo = installedApps.get(arg0);

tv.setText(""+pinfo.appname);

iv.setImageDrawable(pinfo.icon);

return customView;

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港