Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使用sqlite数据库显示唯一数据?_Android_Sqlite - Fatal编程技术网

如何在android中使用sqlite数据库显示唯一数据?

如何在android中使用sqlite数据库显示唯一数据?,android,sqlite,Android,Sqlite,我已经在SQLiteOpenHelper类中创建了数据库。我还在其他活动(InsertActivity.java)中的按钮单击事件中插入数据库。现在,当我在listview上显示数据时,会生成两个相同的条目。如何在列表视图中显示不同的记录 ListActivity.java public class ListActivity extends Activity { ListView lv; ArrayList<String> items = new ArrayList&

我已经在SQLiteOpenHelper类中创建了数据库。我还在其他活动(
InsertActivity.java
)中的
按钮单击事件中插入数据库。现在,当我在listview上显示数据时,会生成两个相同的条目。如何在
列表视图中显示不同的记录

ListActivity.java

public class ListActivity extends Activity {
    ListView lv;
    ArrayList<String> items = new ArrayList<String>();
    ArrayList<String> items_id = new ArrayList<String>();
    dbhelper dh;
    SQLiteDatabase db;
    int index_id;
    Button btn;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);
        Button btn;
        btn = (Button)findViewById(R.id.newProjectlist);
        btn.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub


                    Intent intent= new Intent(ListActivity.this,NewProject.class);
                startActivity(intent);
            }
        });  
        lv = (ListView)findViewById(R.id.projectListView);
        setUpList();
        dh = new dbhelper(this);

        Cursor c = getAllData();
        showAllData(c);  
        registerForContextMenu(lv);      
    }

  @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        super.onCreateContextMenu(menu, v, menuInfo);

        if(v.getId() == R.id.projectList){
            menu.setHeaderIcon(R.drawable.ic_launcher);
            menu.setHeaderTitle("Record List");
            menu.add(0,1,menu.NONE,"Delete Record");
            menu.add(0,2,menu.NONE,"Show Record");
        }
    }

    @Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
        int itemId = item.getItemId();
        if(itemId == 1)
        {
            AdapterView.AdapterContextMenuInfo menuinfo = (AdapterContextMenuInfo) item.getMenuInfo();
            int poistion = menuinfo.position;
            String id_string = items_id.get(poistion);
            long id = Long.valueOf(id_string);

            //menuinfo = (AdapterContextMenuInfo) item.getMenuInfo();
            //index_id = menuinfo.position;
            deleteUserData(index_id);
            items_id.remove(poistion);
        }
        if(itemId == 2){
            AdapterView.AdapterContextMenuInfo menuinfo;
            menuinfo = (AdapterContextMenuInfo) item.getMenuInfo();
            index_id = menuinfo.position;
            editUserData(index_id);
        }
    return super.onContextItemSelected(item);
}

    private void editUserData(int indexid) {
        // TODO Auto-generated method stub
        String user_id = items_id.get(indexid);
        Intent intEdit = new Intent(ListActivity.this, MainActivity.class);
        intEdit.putExtra("EditID", user_id);
        startActivityForResult(intEdit, 1);
    }

    private void deleteUserData(int indexid) {
        // TODO Auto-generated method stub
//      String user_id = items_id.get(indexid);
        //Toast.makeText(getApplicationContext(), "id " + user_id, 1).show();
        db = dh.getWritableDatabase();
        db.delete("timer","_ID" + "=" + indexid, null);
        finish();
//      Toast.makeText(getApplicationContext(), "Record deleted successfully", 1).show();
    }

    private void showAllData(Cursor c) {
        // TODO Auto-generated method stub
        while(c.moveToNext())
        {
            int id = c.getInt(0);
            String name = c.getString(1);
            String timerpoint1 = c.getString(2);
            String timerpoint2 = c.getString(3);
            String timerpoint3 = c.getString(4);
            String servicetime1 = c.getString(5);
            String servicetime2 = c.getString(6);
            items.add("" + name);
            items_id.add(""+id);
        }
        setUpList();
    }

    private Cursor getAllData() {
        // TODO Auto-generated method stub
        db = dh.getReadableDatabase();
        //String sortorder = dh.Name + "DESC";
    //  String query ="SELECT DISTINCT name FROM timer";
    //  Cursor c = db.rawQuery(query, null);
    //   if (c != null) {
    //            c.moveToFirst();
    //        }
//      String[] cols = new String[] {"name"};
        Cursor c = db.query(true, "timer",null,null,null,null,null,null,null);   
        //Cursor cur = db.query(Distinct,"timer", null, null, null, null, null, null, null);
        startManagingCursor(c);
    //  Cursor c=db.rawQuery("select distinct Name from timer;",null);
        return c;   
        }     
    private void setUpList() {
        // TODO Auto-generated method stub
        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,items));
    }   

    }
公共类ListActivity扩展活动{
ListView lv;
ArrayList items=新建ArrayList();
ArrayList items_id=new ArrayList();
DBDH;
sqlitedb数据库;
int-index_-id;
按钮btn;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_列表);
按钮btn;
btn=(按钮)findViewById(R.id.newProjectlist);
btn.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
//TODO自动生成的方法存根
意向意向=新意向(ListActivity.this,NewProject.class);
星触觉(意向);
}
});  
lv=(ListView)findViewById(R.id.projectListView);
setUpList();
dh=新的dbhelper(this);
游标c=getAllData();
showAllData(c);
registerForContextMenu(lv);
}
@凌驾
public void onCreateContextMenu(ContextMenu,视图v,
上下文菜单信息(menuInfo){
//TODO自动生成的方法存根
super.onCreateContextMenu(menu,v,menuInfo);
if(v.getId()==R.id.projectList){
menu.setHeaderIcon(R.drawable.ic_启动器);
菜单.设置标题(“记录列表”);
menu.add(0,1,menu.NONE,“删除记录”);
menu.add(0,2,menu.NONE,“显示记录”);
}
}
@凌驾
公共布尔值onContextItemSelected(MenuItem项){
//TODO自动生成的方法存根
int itemId=item.getItemId();
if(itemId==1)
{
AdapterView.AdapterContextMenuInfo menuinfo=(AdapterContextMenuInfo)项。getMenuInfo();
int position=menuinfo.position;
String id\u String=items\u id.get(position);
long id=long.valueOf(id\u字符串);
//menuinfo=(AdapterContextMenuInfo)项。getMenuInfo();
//索引_id=menuinfo.position;
deleteUserData(索引_id);
项目标识移除(放置);
}
if(itemId==2){
AdapterView.AdapterContextMenuInfo menuinfo;
menuinfo=(AdapterContextMenuInfo)项。getMenuInfo();
索引_id=menuinfo.position;
editUserData(索引_id);
}
返回super.onContextItemSelected(项目);
}
私有void editUserData(int indexid){
//TODO自动生成的方法存根
字符串user\u id=items\u id.get(indexid);
Intent intEdit=新的Intent(ListActivity.this,MainActivity.class);
intEdit.putExtra(“EditID”,用户id);
startActivityForResult(intEdit,1);
}
私有void deleteUserData(int indexid){
//TODO自动生成的方法存根
//字符串user\u id=items\u id.get(indexid);
//Toast.makeText(getApplicationContext(),“id”+user_id,1.show();
db=dh.getWritableDatabase();
db.delete(“计时器”,“_ID”+“=”+indexid,null);
完成();
//Toast.makeText(getApplicationContext(),“记录已成功删除”,1.show();
}
私有void showAllData(光标c){
//TODO自动生成的方法存根
while(c.moveToNext())
{
int id=c.getInt(0);
String name=c.getString(1);
String timerpoint1=c.getString(2);
String timerpoint2=c.getString(3);
String timerpoint3=c.getString(4);
字符串servicetime1=c.getString(5);
字符串servicetime2=c.getString(6);
项目。添加(“+”名称);
添加项目标识(“+id”);
}
setUpList();
}
私有游标getAllData(){
//TODO自动生成的方法存根
db=dh.getReadableDatabase();
//字符串sortorder=dh.Name+“DESC”;
//String query=“从计时器中选择不同的名称”;
//游标c=db.rawQuery(查询,空);
//如果(c!=null){
//c.移动到第一个();
//        }
//字符串[]cols=新字符串[]{“名称”};
游标c=db.query(true,“timer”,null,null,null,null,null,null,null,null,null);
//cursorcur=db.query(不同的“计时器”,null,null,null,null,null,null,null,null);
开始管理光标(c);
//游标c=db.rawQuery(“从计时器中选择不同的名称;”,null);
返回c;
}     
私有void setUpList(){
//TODO自动生成的方法存根
lv.setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,items));
}   
}

尝试使用
分组依据
。如果仍然找不到所需的结果,请检查是否在任何地方执行sqlite查询时出错,并通知我

SELECT Name 
FROM timer
GROUP BY Name

如何避免在ListView中重复输入?


避免重复使用addRecord方法()。因为当您在addRecord()中调用insert()时,只需在onClick()中定义一次addRecord(),最后就可以避免在Listview中输入相同的记录。

我想您可以在查询中使用
DISTINCT
来获得DISTINCT记录请给我一个该英雄的代码。。。。真的吗,你希望在7分钟内得到答案?我想知道你点比萨饼的时候会怎么做。除此之外,这里没有“请给我一个代码”;也许可以从谷歌上搜索SQL的
DISTINCT
关键字开始?英雄,你建议使用DISTINCT,我已经尝试过了。请给我一些关于“如何使用android在sqlite中创建清晰的记录”的其他建议。Eric,如果你是一名优秀的程序员,那么你永远不会原谅自己,而是愚蠢地完成工作。OMG!我还没有