import android.app.Activity; 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.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.HashMap; /** * */ public class ShopGoodsActivity extends Activity implements View.OnClickListener { /** * 商铺名称商铺名称(观音山店) */ private TextView mShopName; private ImageView mShopImg; private ImageView mShopback; private RelativeLayout mRelativeLayout; /** * 商铺名称商铺名称(观音山店) */ private TextView mShopNames; private ImageView mShopStarOne; private ImageView mShopStarTwo; private ImageView mShopStarThree; private ImageView mShopStarFour; private ImageView mShopDetailsStarFive; private RelativeLayout mRelativeLayout2; /** * 人气指数 */ private TextView mTextView18; /** * 家居用品/家具 */ private TextView mShopTpye; /** * 商品分类 */ private RadioButton mShopGoods; /** * 商家推荐 */ private RadioButton mShopBusiness; /** * 价格 */ private RadioButton mShopPrice; private RadioGroup mBottomGroup; private ListView mShopGoodsList; private ShopGoodsAdaapter mShopGoodsAdaapter; private final int MSG_UPDATE_GOODADD = 0; private UpHandler mHandler; private int checkposition = 0 ; private class UpHandler extends Handler{ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case MSG_UPDATE_GOODADD: // View itemView=mShopGoodsList.getChildAt(checkposition); // ImageView mGoodCut =(ImageView) itemView.findViewById(R.id.goods_cut); // TextView mGoodNum =(TextView) itemView.findViewById(R.id.goods_num); // mGoodCut.setVisibility(View.VISIBLE); // mGoodNum.setVisibility(View.VISIBLE); mShopGoodsAdaapter.setSelected(checkposition,true); // mLvAdapter.setSelected(position, holder.checked.isChecked()); mShopGoodsAdaapter.notifyDataSetChanged(); break; } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shop_goods); initView(); initVariable(); initListener(); } private void initView() { mShopback = (ImageView) findViewById(R.id.shop_goods_back); mShopback.setOnClickListener(this); mShopName = (TextView) findViewById(R.id.shop_name); mShopName.setOnClickListener(this); mShopImg = (ImageView) findViewById(R.id.shop_img); mShopImg.setOnClickListener(this); mShopNames = (TextView) findViewById(R.id.shop_names); mShopNames.setOnClickListener(this); mShopStarOne = (ImageView) findViewById(R.id.shop_star_one); mShopStarOne.setOnClickListener(this); mShopStarTwo = (ImageView) findViewById(R.id.shop_star_two); mShopStarTwo.setOnClickListener(this); mShopStarThree = (ImageView) findViewById(R.id.shop_star_three); mShopStarThree.setOnClickListener(this); mShopStarFour = (ImageView) findViewById(R.id.shop_star_four); mShopStarFour.setOnClickListener(this); mShopDetailsStarFive = (ImageView) findViewById(R.id.shop_details_star_five); mShopDetailsStarFive.setOnClickListener(this); mShopTpye = (TextView) findViewById(R.id.shop_type); mShopTpye.setOnClickListener(this); mShopGoods = (RadioButton) findViewById(R.id.shop_goods); mShopGoods.setOnClickListener(this); mShopBusiness = (RadioButton) findViewById(R.id.shop_business); mShopBusiness.setOnClickListener(this); mShopPrice = (RadioButton) findViewById(R.id.shop_price); mShopPrice.setOnClickListener(this); mBottomGroup = (RadioGroup) findViewById(R.id.bottom_group); mBottomGroup.setOnClickListener(this); mShopGoodsList = (ListView) findViewById(R.id.shop_goods_list); } private void initVariable(){ mHandler = new UpHandler(); mShopGoodsAdaapter = new ShopGoodsAdaapter(); mShopGoodsList.setAdapter(mShopGoodsAdaapter); mShopGoodsAdaapter.initSelect(); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.shop_goods_back: finish(); break; } } private void initListener(){ } private HashMap<Integer, Boolean> mCheckedMap; private int mCheckedNum = 0; private class ShopGoodsAdaapter extends BaseAdapter { ViewHolder viewHolder; public ShopGoodsAdaapter() { mCheckedMap = new HashMap<>(); } private void initSelect() { mCheckedMap.clear(); mCheckedNum = 0; for (int i = 0; i < getCount(); i++) { mCheckedMap.put(i, false); } } public Integer getSelectedNum() { return mCheckedNum; } public void setSelected(final int position, final boolean isChecked) { mCheckedMap.remove(position); mCheckedMap.put(position, isChecked); if (isChecked) { mCheckedNum++; } else if (mCheckedNum > 0) { mCheckedNum--; } } public void clear() { // mDataList.clear(); mCheckedMap.clear(); mCheckedNum = 0; } @Override public int getCount() { return 15; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int position, View view, ViewGroup viewGroup) { final int num = position; if (view == null) { viewHolder = new ViewHolder(); view = getLayoutInflater().inflate(R.layout.shop_goods_list, null); viewHolder.mGoodImg =(ImageView) view.findViewById(R.id.goods_img); viewHolder.mGoodName =(TextView) view.findViewById(R.id.goods_name); viewHolder.mGoodSale =(TextView) view.findViewById(R.id.goods_sale); viewHolder.mGoodPrice =(TextView) view.findViewById(R.id.goods_price); viewHolder.mGoodAdd =(ImageView) view.findViewById(R.id.goods_add); // viewHolder.mGoodAdd.setOnClickListener(new goodsAdd(position)); viewHolder.mGoodCut =(ImageView) view.findViewById(R.id.goods_cut); viewHolder.mGoodNum =(TextView) view.findViewById(R.id.goods_num); view.setTag(viewHolder); }else { viewHolder =(ViewHolder) view.getTag(); } viewHolder.mGoodAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.e("log " , "goodsAdd onClick"); checkposition = num; mHandler.sendEmptyMessage(MSG_UPDATE_GOODADD); } }); if (mCheckedMap.get(num) == false){ viewHolder.mGoodCut.setVisibility(View.INVISIBLE); viewHolder.mGoodNum.setVisibility(View.INVISIBLE); }else{ viewHolder.mGoodCut.setVisibility(View.VISIBLE); viewHolder.mGoodNum.setVisibility(View.VISIBLE); } // holder.checked.setChecked(mCheckedMap.get(position)); return view; } class goodsAdd implements View.OnClickListener{ public int position; public goodsAdd(int p) { position = p; } @Override public void onClick(View view) { Log.e("log " , "goodsAdd onClick"); Message msg = mHandler.obtainMessage(MSG_UPDATE_GOODADD); viewHolder.mGoodNum.setVisibility(View.VISIBLE); viewHolder.mGoodNum.setText(" "+1); viewHolder.mGoodCut.setVisibility(View.VISIBLE); } } @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); } } private class ViewHolder { private ImageView mGoodImg; private ImageView mGoodAdd; private ImageView mGoodCut; private TextView mGoodName; private TextView mGoodSale; private TextView mGoodPrice; private TextView mGoodNum; } }
listview 复用数据错误以及listview item中的控件之间修改状态
最新推荐文章于 2021-10-28 10:35:51 发布