Java ArrayList排序,其中数据来自SQLite
我想在android中对arraylist进行排序,数据是通过数据库添加的。 我该怎么做?请帮帮我Java ArrayList排序,其中数据来自SQLite,java,android,Java,Android,我想在android中对arraylist进行排序,数据是通过数据库添加的。 我该怎么做?请帮帮我 import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.provider.Contact
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.provider.ContactsContract;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* Created by Imran on 10/25/2015.
*/
public class DataSource {
private DatabaseHelper databaseHelper;
private SQLiteDatabase database;
private ContactModel contactModel;
public DataSource(Context context) {
databaseHelper = new DatabaseHelper(context);
}
public void open(){
database= databaseHelper.getWritableDatabase();
}
public void close(){
databaseHelper.close();
}
public long insertData(ContactModel contactModel){
this.open();
ContentValues contentValues=new ContentValues();
contentValues.put(DatabaseHelper.COL_NAME,contactModel.getName());
contentValues.put(DatabaseHelper.COL_COMPANY,contactModel.getCompanyName());
contentValues.put(DatabaseHelper.COL_DESIGNATION,contactModel.getDesignation());
contentValues.put(DatabaseHelper.COL_PHONE_NO,contactModel.getPhoneNo());
contentValues.put(DatabaseHelper.COL_EMAIL,contactModel.getEmail());
long inserted=database.insert(DatabaseHelper.CONTACT_TABLE,null,contentValues);
database.close();
this.close();
return inserted;
}
public boolean updateData(String id,ContactModel contactModel){
this.open();
ContentValues contentValues=new ContentValues();
contentValues.put(DatabaseHelper.COL_NAME,contactModel.getName());
contentValues.put(DatabaseHelper.COL_COMPANY,contactModel.getCompanyName());
contentValues.put(DatabaseHelper.COL_DESIGNATION,contactModel.getDesignation());
contentValues.put(DatabaseHelper.COL_PHONE_NO,contactModel.getPhoneNo());
contentValues.put(DatabaseHelper.COL_EMAIL, contactModel.getEmail());
long update=database.update(DatabaseHelper.CONTACT_TABLE, contentValues, DatabaseHelper.COL_ID + " = " + id,
null);
if (update>0){
return true;
}else {
return false;
}
}
public ArrayList<ContactModel> getAllContact(){
this.open();
ArrayList<ContactModel> contactModelArrayList=new ArrayList<>();
ArrayList<ContactModel> sortedContactModelArrayList=new ArrayList<>();
Cursor cursor=database.query(DatabaseHelper.CONTACT_TABLE, null, null, null, null, null, null);
if(cursor!=null && cursor.getCount()>0){
cursor.moveToFirst();
for(int i=0;i<cursor.getCount();i++){
String id=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_ID));
String name=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_NAME));
String company=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_COMPANY));
String designation=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_DESIGNATION));
String phoneNo=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_PHONE_NO));
String email=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_EMAIL));
contactModel=new ContactModel(id,name,company,designation,phoneNo,email);
contactModelArrayList.add(contactModel);
cursor.moveToNext();
this.close();
}
}
/* Collections.sort(contactModelArrayList, new Comparator<>() {
@Override
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
});*/
sortedContactModelArrayList=Collections.sort(contactModelArrayList);
return sortedContactModelArrayList;
}
public boolean delete(String id){
this.open();
database.delete(DatabaseHelper.CONTACT_TABLE, DatabaseHelper.COL_ID + "=" + id, null);
this.close();
return true;
}
public ContactModel singleContact(String id){
this.open();
Cursor cursor=database.query(DatabaseHelper.CONTACT_TABLE,
new String[]{DatabaseHelper.COL_ID,DatabaseHelper.COL_NAME,DatabaseHelper.COL_COMPANY,DatabaseHelper.COL_DESIGNATION,
DatabaseHelper.COL_PHONE_NO,DatabaseHelper.COL_EMAIL},DatabaseHelper.COL_ID +" = " + id,null,null,null ,null);
cursor.moveToFirst();
String mId=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_ID));
String name=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_NAME));
String company=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_COMPANY));
String designation=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_DESIGNATION));
String phoneNo=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_PHONE_NO));
String email=cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_EMAIL));
cursor.close();
contactModel=new ContactModel(mId,name,company,designation,phoneNo,email);;
this.close();
return contactModel;
}
}
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.provider.contacts合同;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
/**
*由Imran于2015年10月25日创建。
*/
公共类数据源{
专用数据库助手数据库助手;
专用数据库;
私有联系人模型;
公共数据源(上下文){
databaseHelper=新的databaseHelper(上下文);
}
公开作废{
database=databaseHelper.getWritableDatabase();
}
公众假期结束(){
databaseHelper.close();
}
公共长插入数据(ContactModel ContactModel){
这个.open();
ContentValues ContentValues=新ContentValues();
put(DatabaseHelper.COL_NAME,contactModel.getName());
put(DatabaseHelper.COL_COMPANY,contactModel.getCompanyName());
contentValues.put(DatabaseHelper.COL_DESIGNATION,contactModel.getDesignation());
contentValues.put(DatabaseHelper.COL_PHONE_NO,contactModel.getPhoneNo());
contentValues.put(DatabaseHelper.COL_EMAIL,contactModel.getEmail());
long inserted=database.insert(DatabaseHelper.CONTACT_表,null,contentValues);
close()数据库;
这个。关闭();
返回插入;
}
公共布尔更新数据(字符串id,ContactModel ContactModel){
这个.open();
ContentValues ContentValues=新ContentValues();
put(DatabaseHelper.COL_NAME,contactModel.getName());
put(DatabaseHelper.COL_COMPANY,contactModel.getCompanyName());
contentValues.put(DatabaseHelper.COL_DESIGNATION,contactModel.getDesignation());
contentValues.put(DatabaseHelper.COL_PHONE_NO,contactModel.getPhoneNo());
contentValues.put(DatabaseHelper.COL_EMAIL,contactModel.getEmail());
长更新=database.update(DatabaseHelper.CONTACT_表,contentValues,DatabaseHelper.COL_ID+“=”+ID,
无效);
如果(更新>0){
返回true;
}否则{
返回false;
}
}
公共阵列列表getAllContact(){
这个.open();
ArrayList contactModelArrayList=新建ArrayList();
ArrayList sortedContactModelArrayList=新建ArrayList();
Cursor Cursor=database.query(DatabaseHelper.CONTACT_表,null,null,null,null,null);
if(cursor!=null&&cursor.getCount()>0){
cursor.moveToFirst();
对于(int i=0;i当您有一个字符串列表时,您可以按字母顺序对它们进行排序,例如
Collections.sort(list);
其中list
是带字符串的数组从数据库检索时,必须使用ORDER BY
按所需的方式对数据进行排序,然后可以将此排序后的数据添加到arraylist。如果有添加对象到arraylist,是否可以?并且应该添加此行?最好的决定是在添加过程结束时对数组进行排序ess(将所有字符串添加到列表中后),但如果您需要,可以在每次添加迭代后对数组进行排序。我已尝试使用上面的代码上载。但它不起作用。请您帮助我修复。aaaa,您的ArrayList不是字符串,而是对象,具有字符串类型的字段,因此要对它们进行比较,您应该在ContactModel类中实现Compariable
并编写一个方法,将它们按名称进行比较,例如。在此处查看“选定为最佳答案”: