删除Android中的ListiView和SQLite行
我正在Android Studio中使用这个库开发一个应用程序:com.daimajia.swipelayout:library:1.2。0@aar. 我的应用程序用户使用具有以下类的SQLite数据库: BDSQLiteHelper.java删除Android中的ListiView和SQLite行,android,sqlite,listview,adapter,Android,Sqlite,Listview,Adapter,我正在Android Studio中使用这个库开发一个应用程序:com.daimajia.swipelayout:library:1.2。0@aar. 我的应用程序用户使用具有以下类的SQLite数据库: BDSQLiteHelper.java public class BDSQLiteHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static f
public class BDSQLiteHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "ExtraOficial";
private static final String TABELA_VAZAMENTOS = "VazamentosToSQL";
private static final String vazID = "VazID";
private static final String nomeServico = "nomeServico";
private static final String[] VAZ_COLUNAS = {vazID, nomeServico};
public BDSQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_VAZAMENTOTABLE = "CREATE TABLE VazamentosToSQL ("+
"vazID INTEGER PRIMARY KEY AUTOINCREMENT,"+
"nomeServico)";
db.execSQL(CREATE_VAZAMENTOTABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS VazamentosToSQL");
this.onCreate(db);
}
public void addVazamentos(VazamentosToSQL VazamentosToSQL) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(nomeServico, VazamentosToSQL.getNomeServico());
db.insert(TABELA_VAZAMENTOS, null, values);
db.close();
}
public VazamentosToSQL getVazamentos (int vazID) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABELA_VAZAMENTOS,
VAZ_COLUNAS,
" vazID = ?",
new String[] {String.valueOf(vazID)},
null,
null,
null,
null);
if (cursor == null) {
return null;
} else {
cursor.moveToFirst();
VazamentosToSQL VazamentosToSQL = cursorTovazamentos(cursor);
return VazamentosToSQL;
}
}
private VazamentosToSQL cursorTovazamentos(Cursor cursor) {
VazamentosToSQL VazamentosToSQL = new VazamentosToSQL();
VazamentosToSQL.setVazID(Integer.parseInt(cursor.getString(0)));
VazamentosToSQL.setNomeServico(cursor.getString(1));
return VazamentosToSQL;
}
public ArrayList<VazamentosToSQL> getAllVazamentos() {
ArrayList<VazamentosToSQL> listaVazamentos = new ArrayList<VazamentosToSQL>();
String query = "SELECT * FROM " + TABELA_VAZAMENTOS + " ORDER BY "+ vazID + " DESC";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
do {
VazamentosToSQL VazamentosToSQL = cursorTovazamentos(cursor);
listaVazamentos.add(VazamentosToSQL);
} while (cursor.moveToNext());
}
return listaVazamentos;
}
[...]
public int deleteVazamentos(VazamentosToSQL VazamentosToSQL) {
SQLiteDatabase db = this.getWritableDatabase();
int i = db.delete(TABELA_VAZAMENTOS,
vazID+" =?",
new String[] { String.valueOf(VazamentosToSQL.getVazID())});
db.close();
return i;
}
ListViewActivity.java:
[...]
//variables
private BDSQLiteHelper bd;
ArrayList<VazamentosToSQL> listaVazamentos;
SwipeLayout swipeLayout;
private final static String TAG = ListViewActivity.class.getSimpleName();
vazamentosAdapter adapter;
ListView lista;
[...]
@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
[...]
bd = new BDSQLiteHelper(this);
lista = (ListView) findViewById(R.id.lvdenuncias);
listaVazamentos = bd.getAllVazamentos();
setListViewHeader();
setListViewAdapter();
lista.setOnItemClickListener(new AdapterView.OnItemClickListener() { //aqui é o vazamentosAdapter
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(ExibeVazamentosActivity.this, DetalhesVazamentosActivity.class);
intent.putExtra("vazID", listaVazamentos.get(position).getVazID());
startActivity(intent);
}
});
@Override
protected void onStart() {
super.onStart();
updateAdapter(); //Refresh ListView items
}
private void setListViewHeader() {
LayoutInflater inflater = getLayoutInflater();
View header = inflater.inflate(R.layout.header_listview, lista, false);
totalClassmates = (TextView) header.findViewById(R.id.total);
swipeLayout = (SwipeLayout)header.findViewById(R.id.swipe_layout);
setSwipeViewFeatures();
//UNNECESSARY for me: lista.addHeaderView(header);
}
private void setSwipeViewFeatures() {
swipeLayout.setShowMode(SwipeLayout.ShowMode.PullOut);
//add drag edge.(If the BottomView has 'layout_gravity' attribute, this line is unnecessary)
swipeLayout.addDrag(SwipeLayout.DragEdge.Left, findViewById(R.id.bottom_wrapper));
swipeLayout.addSwipeListener(new SwipeLayout.SwipeListener() {
@Override
public void onClose(SwipeLayout layout) {
Log.i(TAG, "onClose");
}
@Override
public void onUpdate(SwipeLayout layout, int leftOffset, int topOffset) {
Log.i(TAG, "on swiping");
}
@Override
public void onStartOpen(SwipeLayout layout) {
Log.i(TAG, "on start open");
}
@Override
public void onOpen(SwipeLayout layout) {
Log.i(TAG, "the BottomView totally show");
}
@Override
public void onStartClose(SwipeLayout layout) {
Log.i(TAG, "the BottomView totally close");
}
@Override
public void onHandRelease(SwipeLayout layout, float xvel, float yvel) {
//when user's hand released.
}
});
}
private void setListViewAdapter() {
adapter = new vazamentosAdapter(this, listaVazamentos);
lista.setAdapter(adapter);
}
public void updateAdapter() {
listaVazamentos.clear();
listaVazamentos.addAll(bd.getAllVazamentos());
adapter.notifyDataSetChanged(); //update adapter
lista.invalidateViews();
lista.refreshDrawableState();
}
}
[…]
//变数
私人BDSqliteBD;
ArrayList listaVazamentos;
泳道布置泳道布置;
私有最终静态字符串标记=ListViewActivity.class.getSimpleName();
vazamentosAdapter适配器;
ListView lista;
[...]
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
[...]
bd=新的BDSQLiteHelper(此);
lista=(ListView)findViewById(R.id.lvdenuncias);
listaVazamentos=bd.getAllVazamentos();
setListViewHeader();
setListViewAdapter();
lista.setOnItemClickListener(新的AdapterView.OnItemClickListener(){//aquiéo vazamentosAdapter
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
意向意向=新意向(ExibeVazamentosActivity.this,DetalhesVazamentosActivity.class);
intent.putExtra(“vazID”,listaVazamentos.get(position.getVazID());
星触觉(意向);
}
});
@凌驾
受保护的void onStart(){
super.onStart();
updateAdapter();//刷新列表视图项
}
私有void setListViewHeader(){
LayoutInflater充气机=getLayoutInflater();
视图标题=充气机。充气(R.layout.header\u listview,lista,false);
TotalAsyments=(TextView)header.findViewById(R.id.total);
swipeLayout=(swipeLayout)header.findViewById(R.id.swipe_布局);
设置WipeViewFeatures();
//我不需要:lista.addHeaderView(header);
}
私有void setswipviewfeatures(){
swipeLayout.setShowMode(swipeLayout.ShowMode.PullOut);
//添加拖动边。(如果底部视图具有“布局\重力”属性,则不需要此行)
addDrag(swipeLayout.DragEdge.Left,findViewById(R.id.bottom_包装器));
swipeLayout.addSwipeListener(新的swipeLayout.SwipeListener(){
@凌驾
公共空间闭合(SwipeLayout布局){
Log.i(标记“onClose”);
}
@凌驾
公共空间更新(SwipeLayout布局、int leftOffset、int topOffset){
Log.i(标记“刷卡时”);
}
@凌驾
开始开放时的公共空间(SwipeLayout布局){
Log.i(标签“启动时打开”);
}
@凌驾
公共空间开放(SwipeLayout布局){
Log.i(标记“底部视图完全显示”);
}
@凌驾
公共空间开始关闭(SwipeLayout布局){
Log.i(标记“底部视图完全关闭”);
}
@凌驾
手动释放上的公共空隙(旋转布局、浮动xvel、浮动yvel){
//当用户的手松开时。
}
});
}
私有void setListViewAdapter(){
适配器=新的vazamentosAdapter(此为listaVazamentos);
setAdapter(适配器);
}
public void updatedapter(){
listaVazamentos.clear();
addAll(bd.getAllVazamentos());
adapter.notifyDataSetChanged();//更新适配器
lista.invalidateViews();
lista.refreshDrawableState();
}
}
vazamentosAdapter.java:
public class vazamentosAdapter extends ArrayAdapter<VazamentosToSQL> {
private final Context context;
private final ArrayList<VazamentosToSQL> elementos;
File imgFile;
private Bitmap bitmap;
private ExifInterface exifObject;
private ExibeVazamentosActivity activity;
int vazID;
private SQLiteDatabase bd;
public vazamentosAdapter(Context context, ArrayList<VazamentosToSQL> elementos) {
super(context, R.layout.linha, elementos);
this.context = context;
this.elementos = elementos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
// inflate UI from XML file
convertView = inflater.inflate(R.layout.linha, parent, false);
// get all UI view
holder = new ViewHolder(convertView);
// set tag for holder
convertView.setTag(holder);
}else {
// if holder created, get tag from view
holder = (ViewHolder) convertView.getTag();
}
[...]
editText.setText(elementos.get(position).getVaznomeServico());
holder.btnEdit.setOnClickListener(onEditListener(position, holder));
holder.btnDelete.setOnClickListener(onDeleteListener(position, holder));
return convertView;
}
private View.OnClickListener onDeleteListener(final int position, final ViewHolder holder) {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
/**--------------Tried it, not working =( ---------------*/
elementos.get(position).getVazID();
//listaVazamentos.remove(position);
//activity.listaVazamentos.remove(position);
//bd = context.openOrCreateDatabase("DesoExtraOficial", Activity.MODE_PRIVATE, null);
//bd.execSQL("DELETE from VazamentosToSQL where vazID = '" + elementos.get(position).getVazID() + "'");
//bd.close();
//elementos.remove(position);
Toast.makeText(context, "ID: "+elementos.get(position).getVazID(),Toast.LENGTH_LONG).show();
bd.deleteVazamentos(VazamentosToSQL);
holder.swipeLayout.close();
// activity.updateAdapter(); //Executa o método "updateAdapter()" na Activity "ExibeVazamentos"
/**--------------Tried it, not working =( ---------------*/
}
};
}
private class ViewHolder {
private TextView name;
private View btnDelete;
private View btnEdit;
private SwipeLayout swipeLayout;
private ListView listv;
public ViewHolder(View v) {
swipeLayout = (SwipeLayout)v.findViewById(R.id.swipe_layout);
btnDelete = v.findViewById(R.id.delete);
btnEdit = v.findViewById(R.id.edit_query);
listv = (ListView) v.findViewById(R.id.lvdenuncias);
swipeLayout.setShowMode(SwipeLayout.ShowMode.PullOut);
}
}
公共类vazamentosAdapter扩展了ArrayAdapter{
私人最终语境;
私人最终ArrayList elementos;
文件imgFile;
私有位图;
私有出口接口出口对象;
私人进出口活动;
瓦齐德;
私有sqlitebd数据库;
公共vazamentosAdapter(上下文,数组列表元素){
超级(上下文,R.layout.linha,elementos);
this.context=上下文;
this.elementos=elementos;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
if(convertView==null){
//从XML文件膨胀UI
convertView=充气机。充气(R.layout.linha,父项,false);
//获取所有UI视图
支架=新的视图支架(convertView);
//为支架设置标签
convertView.setTag(支架);
}否则{
//如果创建了保持架,则从视图中获取标记
holder=(ViewHolder)convertView.getTag();
}
[...]
setText(elementos.get(position.getVaznomeServico());
holder.btnEdit.setOnClickListener(onEditListener(位置,holder));
holder.btnDelete.setOnClickListener(onDeleteListener(位置,holder));
返回视图;
}
private View.OnClickListener onDeleteListener(最终int位置,最终ViewHolder){
返回新视图。OnClickListener(){
@凌驾
公共void onClick(视图v){
/**--------------试过了,没用=(---------------*/
get(position.getVazID();
//listaVazamentos.移除(位置);
//activity.listaVazamentos.remove(位置);
//bd=context.openOrCreateDatabase(“DesoExtraOficial”,Activity.MODE_PRIVATE,null);
//bd.execSQL(“从VazamentosToSQL中删除,其中vazID=”+elementos.get(position.getVazID()+”);
//bd.close();
//元素。移除(位置);
Toast.makeText(上下文,“ID:+elementos.get(position).getVazID(),Toast.LENGTH_LONG.show();
bd.deleteVazamentos(VazamentosToSQL);
保持架。swipeLayout.close();
//activity.updateAdapter();//Ex
public class vazamentosAdapter extends ArrayAdapter<VazamentosToSQL> {
private final Context context;
private final ArrayList<VazamentosToSQL> elementos;
File imgFile;
private Bitmap bitmap;
private ExifInterface exifObject;
private ExibeVazamentosActivity activity;
int vazID;
private SQLiteDatabase bd;
public vazamentosAdapter(Context context, ArrayList<VazamentosToSQL> elementos) {
super(context, R.layout.linha, elementos);
this.context = context;
this.elementos = elementos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
// inflate UI from XML file
convertView = inflater.inflate(R.layout.linha, parent, false);
// get all UI view
holder = new ViewHolder(convertView);
// set tag for holder
convertView.setTag(holder);
}else {
// if holder created, get tag from view
holder = (ViewHolder) convertView.getTag();
}
[...]
editText.setText(elementos.get(position).getVaznomeServico());
holder.btnEdit.setOnClickListener(onEditListener(position, holder));
holder.btnDelete.setOnClickListener(onDeleteListener(position, holder));
return convertView;
}
private View.OnClickListener onDeleteListener(final int position, final ViewHolder holder) {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
/**--------------Tried it, not working =( ---------------*/
elementos.get(position).getVazID();
//listaVazamentos.remove(position);
//activity.listaVazamentos.remove(position);
//bd = context.openOrCreateDatabase("DesoExtraOficial", Activity.MODE_PRIVATE, null);
//bd.execSQL("DELETE from VazamentosToSQL where vazID = '" + elementos.get(position).getVazID() + "'");
//bd.close();
//elementos.remove(position);
Toast.makeText(context, "ID: "+elementos.get(position).getVazID(),Toast.LENGTH_LONG).show();
bd.deleteVazamentos(VazamentosToSQL);
holder.swipeLayout.close();
// activity.updateAdapter(); //Executa o método "updateAdapter()" na Activity "ExibeVazamentos"
/**--------------Tried it, not working =( ---------------*/
}
};
}
private class ViewHolder {
private TextView name;
private View btnDelete;
private View btnEdit;
private SwipeLayout swipeLayout;
private ListView listv;
public ViewHolder(View v) {
swipeLayout = (SwipeLayout)v.findViewById(R.id.swipe_layout);
btnDelete = v.findViewById(R.id.delete);
btnEdit = v.findViewById(R.id.edit_query);
listv = (ListView) v.findViewById(R.id.lvdenuncias);
swipeLayout.setShowMode(SwipeLayout.ShowMode.PullOut);
}
}
public int deleteVazamentos(VazamentosToSQL VazamentosToSQL) {
SQLiteDatabase db = this.getWritableDatabase();
int i = db.delete(TABELA_VAZAMENTOS, vazID+" =?", new String[] { String.valueOf(VazamentosToSQL.getVazID())});
db.close();
return i;
}
public void deleteVazamentos(int vazID) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABELA_VAZAMENTOS, "vazID=" + vazID, null);
}
bd.deleteVazamentos(elementos.get(position).getVazID());