如何在列表视图中避免重复 android

How to Avoid Duplication in Listview android

嗨,我正在学习从 assert 文件夹访问数据库文件 在这里我附上我的外部数据库图像

我成功地在列表视图中添加了标题字段,但标题在数据库和我的输出中都重复了,但我只需要一顿早餐、晚餐、午餐 我们该怎么做??

主要活动

public class MainActivity extends ActionBarActivity {

ListView listView;
SqlLiteDbHelper dbHelper;
FoodSupply foodSupply;
SQLiteDatabase sqLiteDatabase;
Cursor cursor;
TitleAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView= (ListView) findViewById(R.id.listView);
    dbHelper = new SqlLiteDbHelper(this);
    try {
        dbHelper.openDataBase();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    //foodSupply= new FoodSupply();
    sqLiteDatabase=dbHelper.getReadableDatabase();
    cursor=dbHelper.gettitles(sqLiteDatabase);
   adapter= new TitleAdapter(getApplicationContext(),R.layout.list_item);
   listView.setAdapter(adapter);
 if (cursor.moveToFirst())
   {
       do {
           String title;
           title=cursor.getString(0);
          foodSupply= new FoodSupply(title);
           adapter.add(foodSupply);

       }while (cursor.moveToNext());
  }
 }

我的数据库class

public Cursor gettitles(SQLiteDatabase db)
{
    db = this.getReadableDatabase();

    Cursor cursor;
    cursor=db.rawQuery("SELECT Title FROM food_details",null);

        return cursor;
}

在将数据附加到适配器之前,您可以使用 Set 来消除重复项。然后将集合附加到适配器。

我不会使用原始查询。而是使用第一个不同的布尔值设置为 true 的 SQLiteDatabase.query 实现,如下所示:

Cursor cursor = db.query(true, "YOUR_TABLE", new String[]{"Title"}, null, null, null, null, null, null);

这应该只给每一个。

编辑:

这是来自 Google 的文档: Android Documentation