觅小宝 2015-03-20 06:29 采纳率: 0%
浏览 621

下面部分的代码,不理解,希望得到大神的详细指教

package com.xunchao.listButton;

import java.util.ArrayList;
import java.util.HashMap;

import android.R.color;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

public class lvButtonAdapter extends BaseAdapter {
private class buttonViewHolder {
ImageView appIcon;
TextView appName;
ImageButton buttonClose;
}

private ArrayList<HashMap<String, Object>> mAppList;
private LayoutInflater mInflater;
private Context mContext;
private String[] keyString;
private int[] valueViewID;
private buttonViewHolder holder;

public lvButtonAdapter(Context c, ArrayList<HashMap<String, Object>> appList, int resource, 
        String[] from, int[] to) {
    mAppList = appList;
    mContext = c;
    mInflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    keyString = new String[from.length];
    valueViewID = new int[to.length];
    System.arraycopy(from, 0, keyString, 0, from.length);
    System.arraycopy(to, 0, valueViewID, 0, to.length);
}

public int getCount() {
    return mAppList.size();
}

public Object getItem(int position) {
    return mAppList.get(position);
}

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

public void removeItem(int position){
    mAppList.remove(position);
    this.notifyDataSetChanged();
}

public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView != null) {
        holder = (buttonViewHolder) convertView.getTag();
    } else {
        convertView = mInflater.inflate(R.layout.lvitem, null);
        holder = new buttonViewHolder();
        holder.appIcon = (ImageView)convertView.findViewById(valueViewID[0]);
        holder.appName = (TextView)convertView.findViewById(valueViewID[1]);
        holder.buttonClose = (ImageButton)convertView.findViewById(valueViewID[2]);
        convertView.setTag(holder);
    }

    HashMap<String, Object> appInfo = mAppList.get(position);
    if (appInfo != null) {
        String aname = (String) appInfo.get(keyString[1]);
        int mid = (Integer)appInfo.get(keyString[0]);
        int bid = (Integer)appInfo.get(keyString[2]);
        holder.appName.setText(aname);
        holder.appIcon.setImageDrawable(holder.appIcon.getResources().getDrawable(mid));
        holder.buttonClose.setImageDrawable(holder.buttonClose.getResources().getDrawable(bid));
        holder.buttonClose.setOnClickListener(new lvButtonListener(position));
    }        
    return convertView;
}

//主要的部分是以下代码,如果和我一样是菜鸟的同学就仔细看看这几行代码这里是关键
class lvButtonListener implements OnClickListener {
    private int position;
    //获取所点击项的id
    lvButtonListener(int pos) {
        position = pos;
    }

    //获取当前项的id并判断是否与所点击项的id相同
    public void onClick(View v) {
        int vid=v.getId();
        if (vid == holder.buttonClose.getId())
           //如果相同就改变状态
            v.setBackgroundColor(Color.WHITE);
    }
}

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 树莓派与pix飞控通信
    • ¥15 自动转发微信群信息到另外一个微信群
    • ¥15 outlook无法配置成功
    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题