如何使用的ID从数据库中使用它的一个ListAdapter?它的、数据库中、如何使用、ListAdapter

2023-09-05 23:08:21 作者:已成→陌路

所以我用一个ListActivity看到从该数据库除了_id每一个记录的信息。我如何可以将ID从数据库到ListAdapter并用它来从数据库中删除相同的ID记录?

向下滚动查看我的脚本。

 进口的java.util.ArrayList;

进口android.app.ListActivity;
进口android.database.Cursor;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteException;
进口android.os.Bundle;
进口android.util.Log;
进口android.view.View;
进口android.widget.AdapterView;
进口android.widget.ArrayAdapter;
进口android.widget.ListView;
进口android.widget.AdapterView.OnItemClickListener;
进口android.widget.TextView;
进口android.widget.Toast;

公共类PrivateHistory扩展ListActivity {

@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);

        ArrayList的<字符串>结果=新的ArrayList<字符串>();
        最后的ArrayList<字符串> resultsID =新的ArrayList<字符串>();

        DatabaseHelper dbHelper =新DatabaseHelper(本);
        最后SQLiteDatabase DB = dbHelper.getReadableDatabase();

        尝试 {
            光标C = db.rawQuery(SELECT * FROM的口袋里,NULL);

            如果(C!= NULL){
                如果(c.moveToLast()){
                    做 {
                        字符串incompleteDate = c.getString(c.getColumnIndex(日));
                        串年= incompleteDate.substring(0,4);
                        串月= incompleteDate.substring(5,7);
                        串天= incompleteDate.substring(8,10);
                        字符串日=日+ - +月+ - +年;

                        字符串ID = c.getString(c.getColumnIndex(_ ID));
                        字符串时间= c.getString(c.getColumnIndex(时代));
                        串收入= c.getString(c.getColumnIndex(收入));
                        串成本= c.getString(c.getColumnIndex(代价));

                        如果(income.equals(0.00)){
                            resultsID.add(ID);
                            results.add(日期:+日期+时间:+时间+\ nCost \ t \ T:€ - +成本);
                        }

                        如果(cost.equals(0.00)){
                            resultsID.add(ID);
                            results.add(日期:+日期+时间:+时间+\ nIncome \ T:€+所得税);
                        }
                    }而(c.moveTo previous());
                }
            }
            ListView的LV = getListView();
            lv.setOnItemClickListener(新OnItemClickListener(){

                公共无效onItemClick(适配器视图<>母公司视图中查看,INT位置,长的id){
                    Toast.makeText(getApplicationContext(),((TextView的)视图).getText(),Toast.LENGTH_SHORT).show();
                }
            });

            this.setListAdapter(新ArrayAdapter<字符串>(这一点,android.R.layout.simple_list_item_1,结果));

        }赶上(SQLiteException SE){
            Log.e(的getClass()getSimpleName(),无法创建或打开数据库);
        }
}

}
 

解决方案

使用这个在你onItemClickMethod删除的行从数据库中被点击

SQLiteDatabase质数据库= dbHelper.getWritableDatabase(); dbase.delete(袖珍,_ID =?,新的String [] {将String.valueOf(位置)});

如何查数据库中最大的id 我想在数据库中查询出id值最大的那条数据该怎么做

So I am using a ListActivity to see every records information except _id from the db. How can I place id from the database to a ListAdapter and use it to Delete the same id record from the database?

Scroll down to see my script.

import java.util.ArrayList;

import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
import android.widget.Toast;

public class PrivateHistory extends ListActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        ArrayList<String> results = new ArrayList<String>();
        final ArrayList<String> resultsID = new ArrayList<String>();

        DatabaseHelper dbHelper = new DatabaseHelper(this);
        final SQLiteDatabase db = dbHelper.getReadableDatabase();

        try {
            Cursor c = db.rawQuery("SELECT * FROM pocket", null);

            if(c != null ) {
                if(c.moveToLast()) {
                    do {
                        String incompleteDate = c.getString(c.getColumnIndex("date"));
                        String year = incompleteDate.substring(0, 4);
                        String month = incompleteDate.substring(5, 7);
                        String day = incompleteDate.substring(8, 10);
                        String date = day + "-" + month + "-" + year;

                        String id = c.getString(c.getColumnIndex("_id"));
                        String time = c.getString(c.getColumnIndex("time"));
                        String income = c.getString(c.getColumnIndex("income"));
                        String cost = c.getString(c.getColumnIndex("cost"));

                        if(income.equals("0.00")){
                            resultsID.add(id);
                            results.add("Date:" + date + " Time:" + time +"\nCost\t\t: € -" + cost);
                        }

                        if (cost.equals("0.00")){
                            resultsID.add(id);
                            results.add("Date:" + date + " Time:" + time +"\nIncome\t: € " + income);
                        }
                    }while (c.moveToPrevious());
                } 
            }
            ListView lv = getListView();
            lv.setOnItemClickListener(new OnItemClickListener() {

                public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                    Toast.makeText(getApplicationContext(), ((TextView) view).getText(),          Toast.LENGTH_SHORT).show();
                }
            });

            this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results));

        } catch (SQLiteException se ) {
            Log.e(getClass().getSimpleName(), "Could not create or Open the database");
        }
}

}

解决方案

Use this in your onItemClickMethod to delete the row that was clicked from the database

SQLiteDatabase dbase = dbHelper.getWritableDatabase(); dbase.delete("pocket", "_ID=?", new String[] {String.valueOf(position)});