以下代码显示listview上sqlite数据库的信息。 1,它显示日期,列表视图允许我点击,当我点击日期时,它会向我显示在该日期在列表视图上完成的信息。我的问题是当我在这个日期12.01.2013保存数据并且我稍后重复相同的日期然后它显示相同的日期两次,我希望它只是显示一个日期,当我点击它向我显示我的数据保存在早上,以及我在同一天晚些时候保存的数据,而不是两个相似的日期。
这里是代码
public class Pro extends Activity implements OnItemClickListener {
private ListView uNamesListView;
private ListAdapter customerListAdapter;
private ArrayList<PojoClass> pojoArrayList;
final Context context = this;
private Button button;
private TextView result;
DBAdapter db = new DBAdapter(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
uNamesListView = (ListView) findViewById(R.id.listView1);
uNamesListView.setOnItemClickListener(this);
pojoArrayList = new ArrayList<PojoClass>();
customerListAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, populateList());
uNamesListView.setAdapter(customerListAdapter);
}
public List<String> populateList() {
List<String> uGraduateNamesList = new ArrayList<String>();
DatabaseHelper openHelperClass = new DatabaseHelper(this);
SQLiteDatabase sqliteDatabase = openHelperClass.getReadableDatabase();
Cursor cursor = sqliteDatabase.query(DBAdapter.SCAN_TABLE, null, null, null, null, null, null);
startManagingCursor(cursor);
while (cursor.moveToNext()) {
String cDate = cursor.getString(cursor.getColumnIndex(DBAdapter.COLUMN_Date ));
String cMeterNumber = cursor.getString(cursor.getColumnIndex(DBAdapter.COLUMN_MeterNumber ));
String cVname = cursor.getString(cursor.getColumnIndex(DBAdapter.COLUMN_Vname ));
String cPname = cursor.getString(cursor.getColumnIndex(DBAdapter.COLUMN_PName ));
PojoClass ss = new PojoClass();
ss.SetName(cDate);
ss.SetSurname(cMeterNumber);
ss.SetID(cVname);
ss.SetHaddress(cPname);
pojoArrayList.add(ss);
uGraduateNamesList.add(cDate);
}
sqliteDatabase.close();
return uGraduateNamesList;
}
@Override
public void onItemClick(AdapterView<?> aa, View view, int ss, long bb) {
// TODO Auto-generated method stub
Intent updateCustomerIntent = new Intent(Pro.this, ViewByVendor.class);
updateCustomerIntent.putExtra("product", product);
startActivity(updateCustomerIntent);
Toast.makeText(getApplicationContext(), "Clicked on :" + ss, Toast.LENGTH_SHORT).show();
PojoClass clickedObject = pojoArrayList.get(ss);
Bundle dataBundle = new Bundle();
dataBundle.putString("clickedDate", clickedObject.getDates());
dataBundle.putString("clickedMeterNumber", clickedObject.getMeterNumber());
dataBundle.putString("clickedVname", clickedObject.getVname());
dataBundle.putString("clickedPname", clickedObject.getPname());
updateCustomerIntent.putExtras(dataBundle);
startActivity(updateCustomerIntent);
}
}
我将非常感谢您的帮助。
答案 0 :(得分:0)
在阅读列表视图的日期时,您只需要唯一日期。
在SQL中,可以使用DISTINCT
或GROUP BY
:
SELECT DISTINCT Date FROM ScanTable
SELECT Date FROM ScanTable GROUP BY Date
Android代码如下所示:
cursor = db.query(true, // <-- distinct
DBAdapter.SCAN_TABLE,
new String[] { DBAdapter.COLUMN_Date },
null, null, null, null, null, null);
cursor = db.query(DBAdapter.SCAN_TABLE,
new String[] { DBAdapter.COLUMN_Date },
null, null,
DBAdapter.COLUMN_Date, // <-- groupBy
null, null);
要显示日期的数据,您应该只将日期传递给该活动,并读取与日期匹配的所有记录:
SELECT * FROM ScanTable WHERE Date = ?
String selectedDate = ...;
cursor = db.query(DBAdapter.SCAN_TABLE, null,
DBAdapter.COLUMN_Date + " = ?", selectedDate,
null, null, null);