簡體   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