永发信息网

android listView 中添加了一个滑动按钮 slipButton报错

答案:2  悬赏:40  手机版
解决时间 2021-02-24 07:25
android开发中想在ListView中添加一个滑动按钮,在网上找到一个SlipButton,添加进去后,运行报错,说
android.view.InflateException: Binary XML file line #37: Error inflating class com.creatao.util.SlipButton
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.creatao.util.SlipButton" on path: /data/app/com.creatao.yotan-1.apk
我listview_item_layout中是通过com.test.util.SlipButton引用的SlipButton,
最佳答案
我自己一个人弄的公司的产品客户端,所以还是想记录下来以免忘记或者丢失...
在我的上一篇博文(点击打开链接)是一个文件管理的东西,基础组件也是ListView所以在此只是改动一下而已。
单击:
点击出现按钮比较简单只需要替换上文中file_row.xml的checkbox为button就可以,然后自己实现onclicklistener就行了,唯一要注意的就是要在xml文件中的button的android:clickable属性设置为true就可以了。
滑动:
滑动来说也相对比较简单需要在上文种FileAdapter.java类中getView方法里的convertView参数对象设置ontouchlistener就可以了,具体看代码:

[java] view plaincopy
@Override
public View getView(int position,View convertView,ViewGroup parent){
ViewHolder holder;

if(convertView == null){
convertView = mInflater.inflate(R.layout.filemanage, null);
convertView.setOnTouchListener(new OnTouchListener(){

@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction())//根据动作来执行代码
{
case MotionEvent.ACTION_MOVE://滑动
Toast.makeText(context, "move...", Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_DOWN://按下
Toast.makeText(context, "down...", Toast.LENGTH_SHORT).show();
DownX = event.getX();
break;
case MotionEvent.ACTION_UP://松开
UpX = event.getX();
Toast.makeText(context, "up..." + Math.abs(UpX-DownX), Toast.LENGTH_SHORT).show();
if(Math.abs(UpX-DownX) > 20){
ViewHolder holder = (ViewHolder) v.getTag();
holder.cBox.setVisibility(View.VISIBLE);
}
break;
default:
}
return true;
}
});
holder = new ViewHolder();
VHs.add(holder);
holder.text = (TextView) convertView.findViewById(R.id.filetext);
holder.text.setTextColor(context.getResources().getColor(R.color.text_color));
holder.icon = (ImageView) convertView.findViewById(R.id.fileicon);
holder.cBox = (Button) convertView.findViewById(R.id.delete_btn);
holder.cBox.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Toast.makeText(context, "btn click...", Toast.LENGTH_SHORT).show();
}
});
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
File f=new File(paths.get(position).toString());
if(items.get(position).toString().equals("goroot")){
holder.text.setText("返回根目录");
holder.icon.setImageBitmap(mIcon1);
holder.cBox.setVisibility(isVisibility.get(position));
}else if(items.get(position).toString().equals("goparent")){
holder.text.setText("返回上一级");
holder.icon.setImageBitmap(mIcon2);
holder.cBox.setVisibility(isVisibility.get(position));
}else{
holder.text.setText(f.getName());
if(f.isDirectory()){
holder.icon.setImageBitmap(mIcon3);
holder.cBox.setVisibility(isVisibility.get(position));
}else{
holder.icon.setImageBitmap(mIcon4);
holder.cBox.setVisibility(isVisibility.get(position));
}
}
return convertView;
}
全部回答
需要自定义listview的适配器。在getview方法里面设置三个button的点击事件。 给个例子你: private class testadapter extends baseadapter { private layoutinflater minflater; private context con; public testadapter (context context) { // cache the layoutinflate to avoid asking for a new one each time. con = context; minflater = layoutinflater.from(context); } public int getcount() { return list.size(); } public object getitem(int position) { return position; } public long getitemid(int position) { return position; } public view getview(int position, view convertview, viewgroup parent) { final viewholder holder; if (convertview == null) { convertview = minflater.inflate(r.layout.list, null); holder = new viewholder(); holder.bt01 = (button) convertview.findviewbyid(r.id.bt01); holder.bt02 = (button) convertview.findviewbyid(r.id.bt02); holder.bt03 = (button) convertview.findviewbyid(r.id.bt03); convertview.settag(holder); } else { holder = (viewholder) convertview.gettag(); } final int arg = position; //bt01点击 holder.bt01.setonclicklistener(new imageview.onclicklistener(){ public void onclick(view v) { } }); //bt02点击 holder.bt02.setonclicklistener(new imageview.onclicklistener(){ public void onclick(view v) { } }); //bt03点击 holder.bt03.setonclicklistener(new imageview.onclicklistener(){ public void onclick(view v) { } }); return convertview; } class viewholder { button bt01; button bt02; button bt03; } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
假如在美国银行存款有1000万美元,可以直接获
光合作用和细胞呼吸是植物体的重要生理功能,
民生大药房地址有知道的么?有点事想过去
天生反骨是指长在什么地方啊
简便计算:10.2x4.8-2x4.8
三菱重工空调WIFI怎么连接手机
中考报名,配额生要交钱么,配额生是什么意思?
韩式紫菜包饭地址在什么地方,想过去办事
朱寨小学怎么去啊,有知道地址的么
想看一些艺术气息比较浓的电影?有没有可以推
德语 简单怎么说
郑伊健和林嘉欣
梦幻西游商会资金问题。
下列属于仲裁的特点的有(  )。A.以当事人
中药一钱是几克
推荐资讯
2015款新朗逸有黑心棉吗?汽车大师,还是再生棉
进行工程项目范围定义的目的有()。A.提高费用
烤箱如何烤骨肉相连?急!
惠源宾馆我想知道这个在什么地方
起亚k2两厢有多宽多长多高
【一株】一株是指一颗吗?
喝酒后可以吃维生素c吗
城市森林这个地址在什么地方,我要处理点事
理科和文科分别是哪几科
瓦房店离大连机场有多远?
三门峡职业技术学校金牌专业怎么样
甲国生产一吨小麦需要30小时,生产一吨大豆需
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?