繁体   English   中英

在适配器上切换监听器

[英]Switch Listener on the adapter

我在列表中显示已安装的应用程序,我添加了一个开关小部件,我想在其中设置onstatechange侦听器。 但是到目前为止,我还不知道在哪里实现它。

我上了吸气剂课

    public class AppList {

       private String name;
       Drawable icon;

       public AppList(String name, Drawable icon) {
           this.name = name;
           this.icon = icon;
       }

       public String getName() {
       return name;
   }

   public Drawable getIcon() {
       return icon;
    }
   }

我尝试在那儿增加一个开关,但是到目前为止还没有运气。 这是适配器。

    public class AppAdapter extends BaseAdapter {

   private LayoutInflater layoutInflater;
   private List<AppList> listStorage;

   public AppAdapter(Context context, List<AppList> customizedListView) {
       layoutInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       listStorage = customizedListView;
   }

   @Override
   public int getCount() {
       return listStorage.size();
   }

   @Override
   public Object getItem(int position) {
       return position;
   }

   @Override
   public long getItemId(int position) {
       return position;
   }

   @Override
   public View getView(int position, View convertView, ViewGroup parent) {

       ViewHolder listViewHolder;
       if(convertView == null){
           listViewHolder = new ViewHolder();
           convertView = layoutInflater.inflate(R.layout.snippet_list_row, parent, false);

           listViewHolder.textInListView = (TextView)convertView.findViewById(R.id.app_name);
           listViewHolder.imageInListView = (ImageView)convertView.findViewById(R.id.app_icon);

           convertView.setTag(listViewHolder);
       }else{
           listViewHolder = (ViewHolder)convertView.getTag();

       }
       listViewHolder.textInListView.setText(listStorage.get(position).getName());
       listViewHolder.imageInListView.setImageDrawable(listStorage.get(position).getIcon());

       return convertView;
   }

   static class ViewHolder{

       TextView textInListView;
       ImageView imageInListView;

   }
}

和呼唤

private List<AppList> getInstalledApps() {
   List<AppList> res = new ArrayList<AppList>();
   List<PackageInfo> packs = getActivity().getPackageManager().getInstalledPackages(0);
   for (int i = 0; i < packs.size(); i++) {
       PackageInfo p = packs.get(i);
       if ((isSystemPackage(p) == true)) {
           String appName = p.applicationInfo.loadLabel(getActivity().getPackageManager()).toString();
           Drawable icon = p.applicationInfo.loadIcon(getActivity().getPackageManager());
           res.add(new AppList(appName, icon));
       }
   }
   return res;
}

我如何实现每行的侦听器。

这样我就可以在getview()上做到了:这就是我所做的。

 @Override
public View getView(final int position, View convertView, ViewGroup parent) {

    final ViewHolder listViewHolder;
    if(convertView == null){
        listViewHolder = new ViewHolder();
        convertView = layoutInflater.inflate(R.layout.snippet_list_row, parent, false);

        listViewHolder.textInListView = (TextView)convertView.findViewById(R.id.app_name);
        listViewHolder.imageInListView = (ImageView)convertView.findViewById(R.id.app_icon);
        listViewHolder.aSwitch = convertView.findViewById(R.id.Switch_Block);

        final View finalConvertView = convertView;
        listViewHolder.aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // do something, the isChecked will be
                // true if the switch is in the On position
                Log.w("OnChange" ,listStorage.get(position).getName() )

            }
        });

        convertView.setTag(listViewHolder);
    }else{
        listViewHolder = (ViewHolder)convertView.getTag();

    }
    listViewHolder.textInListView.setText(listStorage.get(position).getName());
    listViewHolder.imageInListView.setImageDrawable(listStorage.get(position).getIcon());

    return convertView;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM