Android:将数据库预加载到表布局视图
我一直在试图找出如何从我的资产文件夹中的预填充数据库中提取信息以显示在tablelayout视图中。如果你知道任何清晰的教程,或者如果你知道如何做,请你帮助我 举例说明我的意思: 数据库示例:Android:将数据库预加载到表布局视图,android,database,sqlite,tablelayout,preload,Android,Database,Sqlite,Tablelayout,Preload,我一直在试图找出如何从我的资产文件夹中的预填充数据库中提取信息以显示在tablelayout视图中。如果你知道任何清晰的教程,或者如果你知道如何做,请你帮助我 举例说明我的意思: 数据库示例: Mountains Valleys Rivers Oceans 维蒙特是不是是不是 肯塔基州不是是不是 南达科他州是不是 (在应用程序中,如果我要显示特定的行,那么tablelayout应该如下所示) 表布局视图 South Dak
Mountains Valleys Rivers Oceans
维蒙特是不是是不是
肯塔基州不是是不是
南达科他州是不是
(在应用程序中,如果我要显示特定的行,那么tablelayout应该如下所示)
表布局视图
South Dakota <--(I know how to put the header)
Mountains yes
Valleys no
Rivers no
Oceans no
南达科他州为什么要将其添加到TableLayout中
Just fetch data from SQLite database and using custom adapter use ListView.
因此使用Multicolumn ListView设置列类型中的所有值
看
我不得不做类似的事情,但不需要光标。以下是我最后为我的项目所做的。它接受一个显示无限进度微调器的对话框
private class AsyncPop extends AsyncTask<Dialog, Integer, ScrollView>
{
@Override
protected void onPostExecute( ScrollView result )
{
setContentView( result );
super.onPostExecute( result );
}
@Override
protected ScrollView doInBackground( Dialog... params )
{
Dialog d = params[0];
Connection con = StaticDBHelper.getCon( TabActivityDetail.this.getParent() );
Statement st = null;
List<Timestamp> date = new ArrayList<Timestamp>();
List<String> text = new ArrayList<String>();
try
{
st = con.createStatement();
String sql = "select activityDateTime, detailText from xfu_ActivityDetail order by activityDateTime desc";
st.execute( sql );
ResultSet rs = st.getResultSet();
while( rs.next() )
{
date.add( rs.getTimestamp( "activityDateTime" ) );
text.add( rs.getString( "detailText" ) );
}
rs.close();
}
catch( SQLException e )
{
//Can't do a whole lot about it right now, should log
}
finally
{
if( null != st )
{
try
{
st.close();
}
catch( SQLException e )
{
//Just ignore it, should log
}
}
}
//Formatting
ViewGroup.LayoutParams textBoxp1 = new ViewGroup.LayoutParams( 130, ViewGroup.LayoutParams.WRAP_CONTENT );
ViewGroup.LayoutParams textBoxp2 = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT );
TableRow.LayoutParams rowp1 = new TableRow.LayoutParams( 130, TableRow.LayoutParams.WRAP_CONTENT );
TableRow.LayoutParams rowp2 = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.WRAP_CONTENT );
TableLayout.LayoutParams table1 = new TableLayout.LayoutParams( TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.FILL_PARENT );
TableLayout tableView = new TableLayout( _context );
tableView.setLayoutParams( table1 );
if( date.size() == 0 )
{
TextView dateView = new TextView( _context );
dateView.setText( "No activity details availible for given filter" );
dateView.setTypeface( Typeface.DEFAULT, Typeface.BOLD );
TableRow row = new TableRow( _context );
row.setLayoutParams( new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT ) );
row.addView( dateView );
tableView.addView( row, new TableLayout.LayoutParams( LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT ) );
}
else
{
for( int index = -1; index < date.size(); index++ )
{
TableRow row = new TableRow( _context );
TextView dateView = new TextView( _context );
TextView textView = new TextView( _context );
if( index == -1 )
{
dateView.setText( "Date / Time" );
textView.setText( "Detail Text" );
dateView.setTypeface( Typeface.DEFAULT, Typeface.BOLD );
textView.setTypeface( Typeface.DEFAULT, Typeface.BOLD );
}
else
{
dateView.setText( LoaderV5._fm.format( date.get( index ) ) );
textView.setText( text.get( index ) );
}
dateView.setLayoutParams( textBoxp1 );
textView.setLayoutParams( textBoxp2 );
row.setLayoutParams( rowp2 );
row.addView( dateView, rowp1 );
row.addView( textView, rowp2 );
tableView.addView( row, table1 );
}
}
//tableView.setColumnShrinkable( 1, true );
HorizontalScrollView otherscroller = new HorizontalScrollView( _context );
otherscroller.addView( tableView );
ScrollView scroller = new ScrollView( _context );
scroller.addView( otherscroller );
scroller.setHorizontalScrollBarEnabled( true );
d.dismiss();
return scroller;
}
}
私有类AsyncPop扩展了AsyncTask
{
@凌驾
受保护的void onPostExecute(滚动查看结果)
{
setContentView(结果);
super.onPostExecute(结果);
}
@凌驾
受保护的ScrollView doInBackground(对话框…参数)
{
对话框d=参数[0];
Connection con=StaticDBHelper.getCon(TabActivityDetail.this.getParent());
语句st=null;
列表日期=新建ArrayList();
列表文本=新的ArrayList();
尝试
{
st=con.createStatement();
String sql=“按activityDateTime说明从xfu\U ActivityDetail顺序中选择activityDateTime,detailText”;
st.execute(sql);
ResultSet rs=st.getResultSet();
while(rs.next())
{
添加日期(rs.getTimestamp(“activityDateTime”);
添加(rs.getString(“detailText”);
}
rs.close();
}
捕获(SQLE异常)
{
//现在不能做太多,应该记录吗
}
最后
{
如果(null!=st)
{
尝试
{
圣克洛斯();
}
捕获(SQLE异常)
{
//只要忽略它,就应该记录
}
}
}
//格式化
ViewGroup.LayoutParams textBoxp1=新建ViewGroup.LayoutParams(130,ViewGroup.LayoutParams.WRAP_内容);
ViewGroup.LayoutParams textBoxp2=新建ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL\u父级,
ViewGroup.LayoutParams.WRAP_内容);
TableRow.LayoutParams rowp1=新的TableRow.LayoutParams(130,TableRow.LayoutParams.WRAP_内容);
TableRow.LayoutParams rowp2=新建TableRow.LayoutParams(TableRow.LayoutParams.FILL_父级,
TableRow.LayoutParams.WRAP_内容);
TableLayout.LayoutParams table1=新建TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_父级,
TableLayout.LayoutParams.FILL_父项);
TableLayout tableView=新的TableLayout(_上下文);
tableView.setLayoutParams(表1);
如果(date.size()==0)
{
TextView dateView=新的TextView(_上下文);
setText(“给定筛选器没有可用的活动详细信息”);
setTypeface(Typeface.DEFAULT,Typeface.BOLD);
TableRow row=新的TableRow(_上下文);
row.setLayoutParams(新的LayoutParams(LayoutParams.FILL\u父级,LayoutParams.WRAP\u内容));
row.addView(日期视图);
tableView.addView(行,新建TableLayout.LayoutParams(LayoutParams.FILL_父级,
LayoutParams.WRAP_CONTENT));
}
其他的
{
for(int index=-1;index
我认为您需要将数据库文件从资产文件夹复制到其他地方,然后才能使用它
这个问题有相关的内容
您对布局或数据库操作感到困惑吗?在某种程度上,我知道我需要使用光标从数据库中提取信息,但我不知道如何将其与tablelayout结合起来。