【问题标题】:Database and listview in android studioandroid studio中的数据库和listview
【发布时间】:2015-05-14 22:10:24
【问题描述】:

我正在尝试将数据保存到数据库中,并且必须在列表视图中显示它。我能够获得输出,但它不是我所需要的,它只是显示 URI。请帮助我如何将我的 COLUMN_NAME 从数据库中获取到 listView 适配器

数据库代码:

public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Mydatabase";
public static final String TABLE_CONTACTS = "MyContacts";
public static final String COLUMN_NAME= "name";
public static final String COLUMN_NUMBER= "number";
public static final String COLUMN_EMAIL= "email";
public static final String COLUMN_CONTACT_ID = "id";

public static final String TABLE_GROUPS = "Groups";
public static final String COLUMN_GROUP_ID = "id";
public static final String COLUMN_GRPNAME= "name";
public static final String COLUMN_MEMBERS= "number";



public DBHelper(Context context)
{
    super(context, DATABASE_NAME, null, 1);
}


@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    Log.d("INFO1","creating db");
    db.execSQL("create table " + TABLE_CONTACTS +
            " (" + COLUMN_CONTACT_ID + " integer primary key, " + 
COLUMN_NAME + " text, " + COLUMN_NUMBER + " number, " + COLUMN_EMAIL + " 
text)");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
    onCreate(db);
}



public boolean addcontact(Database_contacts database_contacts){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    /*contentValues.put(COLUMN_CONTACT_ID, database_contacts.getId());*/
    contentValues.put(COLUMN_NAME, database_contacts.getName());
    contentValues.put(COLUMN_NUMBER, database_contacts.getNumber());
    contentValues.put(COLUMN_EMAIL, database_contacts.getEmail());

    db.insert(TABLE_CONTACTS, null, contentValues);
    db.close();
    return true;
}

public List<Database_contacts> getAllcontactDetails() {

    List<Database_contacts> contactList = new ArrayList<Database_contacts>
();

    String selectQuery = "SELECT "+COLUMN_NAME+" FROM " + TABLE_CONTACTS;

    SQLiteDatabase database = this.getWritableDatabase();
    Cursor cursor = database.rawQuery(selectQuery, null);

    if(cursor.moveToFirst()) {
        do {
            Database_contacts dashboardDetails = new Database_contacts();

/*dashboardDetails.setId(Integer.parseInt(cursor.getString(0)));*/
            dashboardDetails.setName(cursor.getString(0));
            contactList.add(dashboardDetails);
        } while (cursor.moveToNext());
    }
    return contactList;
}

}

联系人活动代码:

public class Contact extends MainActivity {
Button addcontact;
DBHelper database;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_contacts);
    final ListView myList= (ListView) findViewById(R.id.listview);
    database = new DBHelper(this);
    List<Database_contacts> contactList = database.getAllcontactDetails();
    contactList.toArray();
    ArrayAdapter<Database_contacts> myAdapter=new 
 ArrayAdapter<Database_contacts>(this, android.R.layout.simple_list_item_1,
            contactList);
    myList.setAdapter(myAdapter);

    myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            Toast.makeText(getApplicationContext(),
                    "Click ListItem Number " + position, Toast.LENGTH_LONG)
                    .show();
        }
    });

    addcontact = (Button)findViewById(R.id.addcontact);
    addcontact.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new 
Intent(getApplicationContext(),AddContact_activity.class);
            startActivity(intent);
        }
    });
}
}

【问题讨论】:

  • 你的问题我不清楚。你想在 ListView 中显示什么?
  • 你想在 listView 中显示名字吗?
  • 是的,我上面已经提到过,我需要将数据库中的 COLUMN_NAME 显示到我的contactactivity类的联系人列表中
  • 这里我使用了两个不同的类 M D,我已经看到了直接方法,但它对我没有多大用处........请提及任何涉及数据库和您的活动的方法在不同的类中,我在列表视图“com.example.rknikhil.contacts.Database_contacts@ea65f53”中得到了类似的东西

标签: android


【解决方案1】:

我认为您需要使用一个适配器,可能是从 CursorAdapter 扩展而来的自定义(?),以从您的数据库中检索数据,以及一些 sql 语句。你对 COLUMN_NAME 的意思是什么,你想在“名称”中显示 COLUMN_NAME 的实际名称还是它的内容?

【讨论】:

  • 是的 COLUMN_NAME 是我在 db 中存储我的名字的字段名称
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2020-01-27
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
相关资源
最近更新 更多