Listview的简单应用
2016-02-01 16:44
246 查看
刚学习安卓不久 对于listview的使用还不是很熟练 所以写一下 加深印象防止自己忘了
在listview中 如果想要在加载页面加载 checkbox textview imageview button 其实并不难 但是点击事件会发生冲突 解决方法之一是(红色代码)
1,在最外层的布局上 加上
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="160dp"
android:padding="5dp"
android:descendantFocusability="blocksDescendants"
android:orientation="horizontal" >
2,在checkbox的xml布局里加上
<CheckBox
android:id="@+id/shop_checkbox_select"
android:layout_width="30dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:onClick="click"
android:focusable="false"
android:focusableInTouchMode="false"
/>
3,在button上加上
<Button
android:id="@+id/shopcar_button_sub"
android:layout_width="35dp"
android:layout_height="35dp"
android:text="-"
android:focusable="false"
android:background="@drawable/bg_border"
android:layout_below="@+id/shopcar_goumai_num"
android:layout_marginTop="3dp"
/>
这样在listview的界面里 点击按钮 复选框 和listview的item就不会有冲突了 还是比较简单的
还有一个问题就是在listview中 如何点击按钮进行传值的问题 因为正常情况下listview的的item有position位置信息 如果不做任何处理的话 手机不知道你点击的是哪一个item 所以这个问题 也是困扰了我
在自定义的适配器中(没有单独写成一个类,直接在fragment中写的) 做如下操作便可的得到position 这样就可以进行随性所欲的操作了 哈哈 主要是重新自己定义监听事件 然后让事件把position传进去 再进行取值 这样就可以得到position了
//删除该item这行
public void removeItem(int position){
list.remove(position);
this.notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView==null) {
vHolderShop=new ViewHolderShop();
convertView=LayoutInflater.from(getActivity()).inflate(R.layout.shopcar_item, null);
vHolderShop.boxSelect= (CheckBox) convertView.findViewById(R.id.shop_checkbox_select);
vHolderShop.icon=(ImageView) convertView.findViewById(R.id.shopcar_item_image_shop);
vHolderShop.title=(TextView) convertView.findViewById(R.id.shopcar_title);
vHolderShop.buyPeo=(TextView) convertView.findViewById(R.id.shopcar_goumai_num);
vHolderShop.shengPeo=(TextView) convertView.findViewById(R.id.shopcar_shengyu_num);
vHolderShop.num=(TextView) convertView.findViewById(R.id.shopcar_buy_num);
vHolderShop.sub=(Button) convertView.findViewById(R.id.shopcar_button_sub);
vHolderShop.add=(Button) convertView.findViewById(R.id.shopcar_button_add);
vHolderShop.delect=(Button) convertView.findViewById(R.id.shopcar_item_bt_delect);
vHolderShop.money_10=(Button) convertView.findViewById(R.id.button_money_10);
vHolderShop.money_50=(Button) convertView.findViewById(R.id.button_money_50);
vHolderShop.money_100=(Button) convertView.findViewById(R.id.button_money_100);
convertView.setTag(vHolderShop);
}else {
vHolderShop=(ViewHolderShop) convertView.getTag();
}
vHolderShop.icon.setBackgroundResource(R.drawable.no_data);
vHolderShop.title.setText(list.get(position).getTitle());
vHolderShop.buyPeo.setText(list.get(position).getBuyNum());
vHolderShop.shengPeo.setText(list.get(position).getShNum());
vHolderShop.sub.setText("-");
vHolderShop.add.setText("+");
vHolderShop.delect.setText("删除");
vHolderShop.money_10.setText("10");
vHolderShop.money_50.setText("50");
vHolderShop.money_100.setText("100");
vHolderShop.num.setText(number+"");
money_zb=number*100;
zongji.setText("总计:"+money_zb+"真币="+number+"元人民币");
/**
* 各种点击事件
*/
vHolderShop.boxSelect.setOnCheckedChangeListener(new MyChangeListener(position));
vHolderShop.sub.setOnClickListener(new DelectListener(position));
vHolderShop.add.setOnClickListener(new DelectListener(position));
vHolderShop.delect.setOnClickListener(new DelectListener(position));
vHolderShop.money_10.setOnClickListener(new DelectListener(position));
vHolderShop.money_50.setOnClickListener(new DelectListener(position));
vHolderShop.money_100.setOnClickListener(new DelectListener(position));
return convertView;
}
class DelectListener implements OnClickListener{
int position;
public DelectListener(int pos) {
// TODO Auto-generated constructor stub
position=pos;
}
@Override
public void onClick(View v) {
int vid=v.getId();
if (vid==vHolderShop.delect.getId()) {
removeItem(position);
}
else if (vid==vHolderShop.add.getId()) {
number++;
vHolderShop.num.setText(number+"");
money_zb=number*100;
zongji.setText("总计:"+money_zb+"真币="+number+"元人民币");
}}}
复选框的一些操作 当被选中是 商品数+1 取消时-1
class MyChangeListener implements OnCheckedChangeListener{
private int position;
public MyChangeListener(int pos){
// TODO Auto-generated constructor stub
position=pos;
}
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
shopNum ++;
gongji.setText("共计:"+shopNum+"件商品");
}else {
if (shopNum>0) {
shopNum --;
gongji.setText("共计:"+shopNum+"件商品");
}else {
shopNum=0;
gongji.setText("共计:"+shopNum+"件商品");
}
}
}
}
写的比较乱 提醒自己 下次可以写的更好!
在listview中 如果想要在加载页面加载 checkbox textview imageview button 其实并不难 但是点击事件会发生冲突 解决方法之一是(红色代码)
1,在最外层的布局上 加上
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="160dp"
android:padding="5dp"
android:descendantFocusability="blocksDescendants"
android:orientation="horizontal" >
2,在checkbox的xml布局里加上
<CheckBox
android:id="@+id/shop_checkbox_select"
android:layout_width="30dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:onClick="click"
android:focusable="false"
android:focusableInTouchMode="false"
/>
3,在button上加上
<Button
android:id="@+id/shopcar_button_sub"
android:layout_width="35dp"
android:layout_height="35dp"
android:text="-"
android:focusable="false"
android:background="@drawable/bg_border"
android:layout_below="@+id/shopcar_goumai_num"
android:layout_marginTop="3dp"
/>
这样在listview的界面里 点击按钮 复选框 和listview的item就不会有冲突了 还是比较简单的
还有一个问题就是在listview中 如何点击按钮进行传值的问题 因为正常情况下listview的的item有position位置信息 如果不做任何处理的话 手机不知道你点击的是哪一个item 所以这个问题 也是困扰了我
在自定义的适配器中(没有单独写成一个类,直接在fragment中写的) 做如下操作便可的得到position 这样就可以进行随性所欲的操作了 哈哈 主要是重新自己定义监听事件 然后让事件把position传进去 再进行取值 这样就可以得到position了
//删除该item这行
public void removeItem(int position){
list.remove(position);
this.notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView==null) {
vHolderShop=new ViewHolderShop();
convertView=LayoutInflater.from(getActivity()).inflate(R.layout.shopcar_item, null);
vHolderShop.boxSelect= (CheckBox) convertView.findViewById(R.id.shop_checkbox_select);
vHolderShop.icon=(ImageView) convertView.findViewById(R.id.shopcar_item_image_shop);
vHolderShop.title=(TextView) convertView.findViewById(R.id.shopcar_title);
vHolderShop.buyPeo=(TextView) convertView.findViewById(R.id.shopcar_goumai_num);
vHolderShop.shengPeo=(TextView) convertView.findViewById(R.id.shopcar_shengyu_num);
vHolderShop.num=(TextView) convertView.findViewById(R.id.shopcar_buy_num);
vHolderShop.sub=(Button) convertView.findViewById(R.id.shopcar_button_sub);
vHolderShop.add=(Button) convertView.findViewById(R.id.shopcar_button_add);
vHolderShop.delect=(Button) convertView.findViewById(R.id.shopcar_item_bt_delect);
vHolderShop.money_10=(Button) convertView.findViewById(R.id.button_money_10);
vHolderShop.money_50=(Button) convertView.findViewById(R.id.button_money_50);
vHolderShop.money_100=(Button) convertView.findViewById(R.id.button_money_100);
convertView.setTag(vHolderShop);
}else {
vHolderShop=(ViewHolderShop) convertView.getTag();
}
vHolderShop.icon.setBackgroundResource(R.drawable.no_data);
vHolderShop.title.setText(list.get(position).getTitle());
vHolderShop.buyPeo.setText(list.get(position).getBuyNum());
vHolderShop.shengPeo.setText(list.get(position).getShNum());
vHolderShop.sub.setText("-");
vHolderShop.add.setText("+");
vHolderShop.delect.setText("删除");
vHolderShop.money_10.setText("10");
vHolderShop.money_50.setText("50");
vHolderShop.money_100.setText("100");
vHolderShop.num.setText(number+"");
money_zb=number*100;
zongji.setText("总计:"+money_zb+"真币="+number+"元人民币");
/**
* 各种点击事件
*/
vHolderShop.boxSelect.setOnCheckedChangeListener(new MyChangeListener(position));
vHolderShop.sub.setOnClickListener(new DelectListener(position));
vHolderShop.add.setOnClickListener(new DelectListener(position));
vHolderShop.delect.setOnClickListener(new DelectListener(position));
vHolderShop.money_10.setOnClickListener(new DelectListener(position));
vHolderShop.money_50.setOnClickListener(new DelectListener(position));
vHolderShop.money_100.setOnClickListener(new DelectListener(position));
return convertView;
}
class DelectListener implements OnClickListener{
int position;
public DelectListener(int pos) {
// TODO Auto-generated constructor stub
position=pos;
}
@Override
public void onClick(View v) {
int vid=v.getId();
if (vid==vHolderShop.delect.getId()) {
removeItem(position);
}
else if (vid==vHolderShop.add.getId()) {
number++;
vHolderShop.num.setText(number+"");
money_zb=number*100;
zongji.setText("总计:"+money_zb+"真币="+number+"元人民币");
}}}
复选框的一些操作 当被选中是 商品数+1 取消时-1
class MyChangeListener implements OnCheckedChangeListener{
private int position;
public MyChangeListener(int pos){
// TODO Auto-generated constructor stub
position=pos;
}
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
shopNum ++;
gongji.setText("共计:"+shopNum+"件商品");
}else {
if (shopNum>0) {
shopNum --;
gongji.setText("共计:"+shopNum+"件商品");
}else {
shopNum=0;
gongji.setText("共计:"+shopNum+"件商品");
}
}
}
}
写的比较乱 提醒自己 下次可以写的更好!
相关文章推荐
- 背景图片的设置及拉伸
- 结转时数据修正
- .net2.0的DirectX.dll和Directsound.dll怎么使用在.net4.0上。
- unity关于lineRender平滑画线问题
- 多线程模拟实现生产者/消费者模型
- python packaging
- 高质量C++/C编程指南(一)
- grunt自动化环境配置
- RAC挂载共享磁盘组
- 国外那些优秀的 Drupal 教程博客
- hdu 5183 Negative and Positive (NP)【fast IO +哈希表】
- WC2016随记
- Zoho Survey:如何提高你的问卷反馈率
- wpf 命名空间中不存在
- sublime text 3 添加 javascript 代码片段 ( snippet )
- Yii2所提倡的配置管理方案
- hadoop格式化报错:"May not run daemons as root. Please specify HADOOP_NAMENODE_USER"的解决办法
- USB集腋成裘:从Linux PC角度看sys.usb.config为adb时的Android设备
- jquery常用事件
- 【Flash逆向调试之三】几个比较有用的注入代码