Android下listview每个Item中包含有按钮,为什么在点击某一行按钮的时候,同时有多行button触发了响应事件?

Adapter.java

package com.example.firsttest.Adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.firsttest.R;

import java.util.ArrayList;
import java.util.List;

public class MyAdapter extends BaseAdapter {
    //?
    private Context mContext;
    //数据
    private ArrayList<String> adress=new ArrayList<>();
    private ArrayList<String> prices=new ArrayList<>();
    private ArrayList<String> titles=new ArrayList<>();
    private ArrayList<Integer> icons=new ArrayList<>();
   // private List<String> mList = new ArrayList<>();

    //构造函数 且传数据
    public MyAdapter(Context context, ArrayList<String> Adress, ArrayList<String> Prices,ArrayList<String> Titles,ArrayList<Integer> Icons) {
        mContext = context;
        adress=Adress;
        prices=Prices;
        titles=Titles;
        icons=Icons;
    }

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

    @Override
    public Object getItem(int i) {
        return titles.get(i);
    }

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

    @Override
    public View getView(int position, View view, ViewGroup viewGroup) {
        int[] flag={0,0};
        ViewHolder viewHolder = null;
        if (view == null) {
            viewHolder = new ViewHolder();
            view = LayoutInflater.from(mContext).inflate(R.layout.list_item, null);
            viewHolder.title=(TextView) view.findViewById(R.id.title);
            viewHolder.price=(TextView) view.findViewById(R.id.price);
            viewHolder.iv=(ImageView) view.findViewById(R.id.iv);
            viewHolder.adress=(TextView) view.findViewById(R.id.adress);
            viewHolder.preBuyButton=view.findViewById(R.id.but_prebuy);

            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }
        viewHolder.title.setText(titles.get(position));

        viewHolder.price.setText(prices.get(position));
        System.out.println("prices.get(position)"+position);
        viewHolder.adress.setText(adress.get(position));
        viewHolder.iv.setBackgroundResource(icons.get(position));
       // Button preBuyButton=viewHolder.preBuyButton;
        viewHolder.preBuyButton.setOnClickListener(new MyAdapterListener(position));
        return view;
    }
    /**
     * 重写监听事件
     */
    class MyAdapterListener implements View.OnClickListener {
        int[] flag={0,0};
        private int position;
        public MyAdapterListener(int pos) {
            position = pos;
        }
        @Override
        public void onClick(View view) {
            if(flag[0]==0){
                view.setActivated(false);
                flag[0]=1;
            }
            else{
                view.setActivated(true);
                flag[0]=0;
            }
           Toast.makeText(mContext, "您点击了-" + titles.get(position), Toast.LENGTH_LONG).show();
        }
    }

    /**
     * 删除按钮的监听接口
     */
//    public interface onItemDeleteListener {
//        void onDeleteClick(int i,Button button);
//    }

//    private onItemDeleteListener mOnItemDeleteListener;

//    public void setOnItemDeleteClickListener(onItemDeleteListener mOnItemDeleteListener) {
//        this.mOnItemDeleteListener = mOnItemDeleteListener;
//    }

    class ViewHolder {
        TextView title;
        TextView price;
        TextView adress;
        ImageView iv;
        Button preBuyButton;
    }
}

activity.java

package com.example.firsttest;


import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.example.firsttest.dao.HouseDao;
import com.example.firsttest.Adapter.MyAdapter;
import com.example.firsttest.dao.UserDao;
import com.example.firsttest.entity.House;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import static android.content.ContentValues.TAG;
public class NewHouse  extends Activity {


    private static final int COMPLETED =1 ;
    private int length;
   // private String[] adress=new String[length];
    private ArrayList<String> adress=new ArrayList<>();
    //private String[] prices =new String[length];
    private ArrayList<String> prices=new ArrayList<>();
    //private String[] titles=new String[length];
    private ArrayList<String> titles=new ArrayList<>();
   // private int[] icons=new int[length];
    private ArrayList<Integer> icons=new ArrayList<>();
    //查询新房数据
    List<Map<String,Object>> newHouseList=new ArrayList<>();

    //定义一个列表视图
    private ListView mListView;
    //private  String[] titles = {"苹果","香蕉","梨子","火龙果","猕猴桃","桃子"};
    //private  String[] prices = {"10元/kg","8元/kg","7元/kg","15元/kg","10元/kg","11元/kg"};
    //private  String[] adress={"武","吴","武","吴","还","呜呜"};


  // private int[] icons = {R.drawable.house1p,R.drawable.house1p,R.drawable.house1p,R.drawable.house1p,R.drawable.house1p,R.drawable.house1p};

    protected  void onCreate(Bundle saveInstanceState){
        int[] flag=new int[]{0,0}; //加购和收藏按钮的状态记号
        super.onCreate(saveInstanceState);
        //加载新房页面
        setContentView(R.layout.activity_new_house);
        //获取新房页面的列表视图
        mListView=(ListView)findViewById(R.id.lv);
//        //获取购物车按钮
//        Button perBuyButton=(Button)findViewById(R.id.but_prebuy);
//        Log.e("test","执行了吗");
//        //对购物车按钮设置监听事件
//        perBuyButton.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                if(flag[0]==0)
//                {
//                    perBuyButton.setActivated(false);
//                    flag[0]=1;
//                }//选中
//                else
//                {
//                   perBuyButton.setActivated(true);
//                    flag[0]=0;
//                }//取消
//            }
//        });
        //查找新房数据
        new Thread(){
            @Override
            public void run() {
                //定义house查询类对象
                HouseDao houseDao=new HouseDao();
                newHouseList=houseDao.fingAllNew();
                length=newHouseList.size();
                Log.e(TAG,"length"+length);
                //得到房子的地址和价格
                for(int i=0;i<length;i++){
                    Map<String,Object> map=newHouseList.get(i);
                    adress.add(map.get("hou_adress").toString());
                    System.out.println("hou_adress"+map.get("hou_adress").toString());
                    prices.add(map.get("hou_price").toString()+"万元/平方米");
                    titles.add(map.get("hou_type").toString());
                    icons.add(R.drawable.house1p);
                }
                Log.e(TAG,"arrlength"+adress.size());
                Message msg = new Message();
                msg.what = COMPLETED;
                handler.sendMessage(msg);
            }
        }.start();
    }
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler() {
        int[] flag={0,0}; //加购和收藏的flag
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == COMPLETED) {
                MyAdapter mAdapter = new MyAdapter(NewHouse.this,adress,prices,titles,icons);
                Log.d("test","这就不执行了");
                mListView.setAdapter(mAdapter);
//                mAdapter.setOnItemDeleteClickListener(new MyAdapter.onItemDeleteListener() {
//                    @Override
//                    public void onDeleteClick(int i,Button button) {
//                        if(flag[0]==0){
//                            button.setActivated(false);
//                            flag[0]=1;
//                        }
//                        else{
//                            button.setActivated(true);
//                            flag[0]=0;
//                        }
//                    }
//                });
            }
        }
    };

//   public class MyBaseAdaPter extends  BaseAdapter{
//        int[] flag={0,0}; //加购和收藏的flag
//        @Override
//        public int getCount( ){
//            return  titles.size();
//        }
//        @Override
//        public Object getItem(int position){
//            System.out.println("titles.get(position)"+titles.get(position));
//            return titles.get(position);
//        }
//        @Override
//        public long getItemId(int position){
//            return  position;
//        }
//        @Override
//        public View getView(int position,View convertView,ViewGroup parent){
//            ViewHolder holder =null;
//            if(convertView == null){
//                convertView = View.inflate( NewHouse.this,R.layout.list_item,null);
//                holder= new ViewHolder();
//                holder.title=(TextView) convertView.findViewById(R.id.title);
//                holder.price=(TextView) convertView.findViewById(R.id.price);
//                holder.iv=(ImageView) convertView.findViewById(R.id.iv);
//                holder.adress=(TextView) convertView.findViewById(R.id.adress);
//                holder.preBuyButton=convertView.findViewById(R.id.but_prebuy);
//                convertView.setTag(holder);
//            }
//            else {
//                holder = (ViewHolder) convertView.getTag();
//            }
//            holder.title.setText(titles.get(position));
//
//            holder.price.setText(prices.get(position));
//            System.out.println("prices.get(position)"+prices.get(position));
//            holder.adress.setText(adress.get(position));
//            holder.iv.setBackgroundResource(icons.get(position));
//            holder.preBuyButton.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View view) {
//                    mOnItemDeleteListener.onDeleteClick(position);
//                }
//            });
//
//            return  convertView;
//        }
//        /**
//         * 加购按钮的监听接口
//         */
//        private onItemDeleteListener mOnItemDeleteListener;
//
//        public void setOnItemDeleteClickListener(onItemDeleteListener mOnItemDeleteListener) {
//            this.mOnItemDeleteListener = mOnItemDeleteListener;
//        }
//    }

//    public interface onItemDeleteListener {
//        void onDeleteClick(int i);
//    }
//
//    static class ViewHolder{
//        TextView title;
//        TextView price;
//        TextView adress;
//        ImageView iv;
//        Button preBuyButton;
//    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值