【Android studio】swiplist使用
前言
本博文主要是对swiplist使用的一个介绍,以及记录,方便后续使用时候可以直接加载。
swiplist介绍
在Android Studio中,swiplist是一个用于存储和管理列表数据的工具类。它提供了一系列方法来添加、删除、获取和遍历列表数据。
常用的方法包括:
- add(item):向列表中添加一个元素。
- remove(item):从列表中删除一个元素。
- clear():清空列表中的所有元素。
- get(index):获取指定位置的元素。
- size():获取列表的大小。
- contains(item):判断列表是否包含指定的元素。
- iterator():返回一个迭代器,可以用于遍历列表中的元素。
除了这些基本方法外,swiplist还提供了一些其他的功能,例如:
- sort():对列表进行排序。
- reverse():将列表中的元素顺序进行反转。
- sublist(startIndex, endIndex):获取指定范围内的子列表。
使用swiplist可以方便地管理和操作列表数据,提高开发效率。
使用实例
private void initSwipListMenu() {
//第1步:设置创建器,并且在其中生成我们需要的菜单项,将其添加进菜单中
creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
SwipeMenuItem deleteItem = new SwipeMenuItem(My_deal.this);
// set item background
deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,0x3F, 0x25)));
// set item width
deleteItem.setWidth(dp2px(90));
// set a icon
deleteItem.setIcon(R.mipmap.item_delete);
// add to menu
menu.addMenuItem(deleteItem);
}
};
list_view.setMenuCreator(creator);
//第2步:为ListView设置菜单项点击监听器,来监听菜单项的点击事件
list_view.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick ( int position, SwipeMenu menu,int index){
glo_pos = position;
switch (index) {
/*case 0:
Toast.makeText(My_deal.this, "暂时未设置", Toast.LENGTH_SHORT).show();
break;*/
case 0:
if (delete_builder == null) {
delete_builder = new AlertDialog.Builder(My_deal.this);
delete_builder.setTitle("提示")
.setMessage("是否确认删除记录")
.setPositiveButton(getString(R.string.common_dialog_true), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
delete_border(glo_pos);
}
})
.setNegativeButton(getString(R.string.common_dialog_false), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
}
delete_builder.show();
break;
}
// false : close the menu; true : not close the menu
return false;
}
});
list_view.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);
//如果设置为swipList的话点击item动作不能适配器里面设置,无效
list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
DealShowBean1 bean=mData.get(position);
Intent intent = new Intent(My_deal.this, Deal_content.class);
Bundle bundle=new Bundle();
bundle.putString("model_id",bean.getModel_id());
intent.putExtras(bundle);
startActivity(intent);
}
});
//效果同上
/* list_view.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() {
@Override
public void onSwipeStart(int position) {
// swipe start
}
@Override
public void onSwipeEnd(int position) {
// swipe end
}
});*/
//set MenuStateChangeListener
list_view.setOnMenuStateChangeListener(new SwipeMenuListView.OnMenuStateChangeListener()
{
@Override
public void onMenuOpen ( int position){
}
@Override
public void onMenuClose ( int position){
}
});
}
额外补充
记录部分就先到这!接下来,是一些个人平时整理的c++要点概要,如有需要可以进行阅读!
结构体
- 第一种是最基本的结构体定义, 其定义了一个结构体 A。
struct A { int a;};
- 第二种则是在定义了一个结构体 B 的同时定义了一个结构体 B 的变量 m。
struct B { int b;}m;
- 第三种结构体定义没有给出该结构体的名称, 但是定义了一个该结构体的变量 n, 也就是说,若是想要在别处定义该结构体的变量是不行的, 只有变量 n 这种在定义结构体的同时定义变量才行。
struct { int c;}n;
- 第四种结构体定义在第一种结构定义的基础上加了关键字
typedef
, 此时我们将struct D{int d}
看成是一个数据类型, 但是因为并没有给出别名, 直接用 D 定义变量是不行的。 如D test;
,不能直接这样定义变量 test。 但struct D test;
可行。
typedef struct D { int d;};
- 第五种结构体定义在第四种结构体定义的基础上加上了别名 x, 此时像在第四种结构体定义中说得那样, 此时的结构体 E 有别名 x, 故可以用 x 定义 E 的结构体变量。 用 E 不能直接定义, 需要在前面加
struct,
如struct E test;
。
typedef struct E { int e;}x;
- 第六种结构体定义在第五种的基础上减去了结构体名, 但是若是直接使用 y 来定义该结构体类型的变量也是可以的。 如
y test;
。 (常用)
typedef struct { int f;}y;
使用内联函数的时候要注意:
函数重载
- C++函数重载的判断依据
- 函数形参的个数;
- 函数形参的类型;
- 形参的顺序;
- 不能把返回值作为函数重载的条件, 原因是编译器在编译时不会去判断函数的返回类型,函数只有调用后, 编译器才会去验证返回类型, 所以返回值不能作为函数重载的依据;
- 常函数 const 可以作为函数重载判断依据, 原因: 重载[]运算符时, 有没有 const 的区别是: 有 const 只读, 没有 const 读写都可以。
- 注意事项:
- 形参的个数或类型至少要有一项是不同的;
- 编译器不以返回值来区分函数。
虚函数和纯虚函数
纯虚函数是指在 C++中, 函数可以用“virtual”和“= 0”关键字来声明。 该函数是一个虚函数,但是在声明时, 没有定义它的函数体。 它是一个空函数, 只提供函数声明, 而不提供实际实现。 由于它编译器不能确定如何实现, 因此需要在子类中实现它。 因此, 纯虚函数也被称为抽象函数。 形如:
class <类名>
{
virtual <类型><函数名>(<参数表>)=0;
…
};
虚函数和纯虚函数的特性:
- 虚函数可以在类中声明, 也可以在类的外部声明, 编译器会自动将它们转换为虚函数;但是纯虚函数只能在类中声明, 而不能在类的外部声明。
- 虚函数可以有实现, 也可以没有实现; 而纯虚函数没有实现, 不可以有实现。
- 虚函数可以在子类中覆盖, 也可以不被覆盖; 而纯虚函数必须在子类中覆盖, 否则编译器将报错。
- 虚函数可以被多态调用, 也可以被静态调用; 而纯虚函数只可以被多态调用, 不可以被静态调用。