如何将数据库中的数据显示到两个Textview中
how to display data from a database into two Textview
我正在尝试开发一个在数据库中保存点和日期的应用程序,但是,我想在列表中显示绿色的点和白色的日期。点和时间点在彼此之上。我的代码:
Class 数据库
public class BaseDeDatos 扩展了 SQLiteOpenHelper{
public BaseDeDatos(Context context) {
super(context, "puntuaciones", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE puntuaciones (puntos INTEGER,fecha VARCHAR)");
}
public void save(int points,String date){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("INSERT INTO puntuaciones VALUES("+points+","+"'"+date+"')");
db.close();
}
public Vector<String> listPoints(int cantidad) {
Vector<String> result = new Vector<String>();
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT puntos, fecha FROM " +
"puntuaciones ORDER BY puntos DESC LIMIT " +cantidad, null);
while (cursor.moveToNext()){
result.add(cursor.getInt(0)+cursor.getString(1));
}
cursor.close();
db.close();
return result;
}
和我的 class 列表
ListView lista;
BaseDeDatos bd;
Vector maxRegis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maximos_registros);
lista=(ListView)findViewById(R.id.lista);
lista.setBackgroundColor(color.Aquamarine);
maxRegis= new Vector();
bd= new BaseDeDatos(this);
maxRegis=bd.listaPuntos(10);
ArrayAdapter adaptador= new ArrayAdapter(this,R.layout.elemento_lista,R.id.tv1,maxRegis);
//MyAdapter adaptador= new MyAdapter(this,bd);
lista.setAdapter(adaptador);
}
和R.layout.elemento_lista
的代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight" >
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="40dp"
android:inputType="textCapCharacters"
android:textColor="#FFD700"
android:textStyle="bold"
android:text="" />
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tv1"
android:layout_alignParentBottom="true"
android:textStyle="italic"
android:text="" />
如果我制作一个特殊的适配器什么都不显示,但是使用 ArrayAdapter 显示到同一个 TextView。
你应该使用 CustomAdapter
而 extends BaseAdapter
这是我的示例 TodoApp 和 CustomAdapter
.
你必须在
中给R.layout.elemento_lista
充气
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = inflater.inflate(R.layout.elemento_lista, null);
}
TextView title = (TextView) convertView.findViewById(R.id.todo_title);
title.setText(getItem(position));
return convertView;
}
然后通过 id、setText 找到您的 TextView
,仅此而已:-)
我正在尝试开发一个在数据库中保存点和日期的应用程序,但是,我想在列表中显示绿色的点和白色的日期。点和时间点在彼此之上。我的代码: Class 数据库 public class BaseDeDatos 扩展了 SQLiteOpenHelper{
public BaseDeDatos(Context context) {
super(context, "puntuaciones", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE puntuaciones (puntos INTEGER,fecha VARCHAR)");
}
public void save(int points,String date){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("INSERT INTO puntuaciones VALUES("+points+","+"'"+date+"')");
db.close();
}
public Vector<String> listPoints(int cantidad) {
Vector<String> result = new Vector<String>();
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT puntos, fecha FROM " +
"puntuaciones ORDER BY puntos DESC LIMIT " +cantidad, null);
while (cursor.moveToNext()){
result.add(cursor.getInt(0)+cursor.getString(1));
}
cursor.close();
db.close();
return result;
}
和我的 class 列表
ListView lista;
BaseDeDatos bd;
Vector maxRegis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maximos_registros);
lista=(ListView)findViewById(R.id.lista);
lista.setBackgroundColor(color.Aquamarine);
maxRegis= new Vector();
bd= new BaseDeDatos(this);
maxRegis=bd.listaPuntos(10);
ArrayAdapter adaptador= new ArrayAdapter(this,R.layout.elemento_lista,R.id.tv1,maxRegis);
//MyAdapter adaptador= new MyAdapter(this,bd);
lista.setAdapter(adaptador);
}
和R.layout.elemento_lista
的代码<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight" >
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="40dp"
android:inputType="textCapCharacters"
android:textColor="#FFD700"
android:textStyle="bold"
android:text="" />
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tv1"
android:layout_alignParentBottom="true"
android:textStyle="italic"
android:text="" />
如果我制作一个特殊的适配器什么都不显示,但是使用 ArrayAdapter 显示到同一个 TextView。
你应该使用 CustomAdapter
而 extends BaseAdapter
这是我的示例 TodoApp 和 CustomAdapter
.
你必须在
中给R.layout.elemento_lista
充气
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = inflater.inflate(R.layout.elemento_lista, null);
}
TextView title = (TextView) convertView.findViewById(R.id.todo_title);
title.setText(getItem(position));
return convertView;
}
然后通过 id、setText 找到您的 TextView
,仅此而已:-)