您的位置:首页 > 其它

listview 复用数据错误以及listview item中的控件之间修改状态

2017-04-11 14:08 459 查看
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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐