如何在Listview android中避免重复

时间:2015-10-03 16:07:35

标签: android listview assert android-external-storage

Hai我正在学习从assert文件夹中获取数据库文件 在这里我附上我的外部数据库图像

我成功地在listview中成功添加了标题字段但是在db和我的输出中都重复了标题,但我只需要一份早餐,晚餐,午餐 我们怎么能这样做?

MainActivity

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());
  }
 }

我的数据库类

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

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

        return cursor;
}

2 个答案:

答案 0 :(得分:1)

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

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

这应该只给出一个。

编辑:

这是Google提供的文档: Android Documentation

答案 1 :(得分:0)

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