[英]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.