Android应用程序:如何在Listview中显示结果集?
我是新来的。。。。 我使用jdbc连接器连接到MySQL数据库。 运行查询并显示到textview没有问题, 但是如何在ListView中显示所有获取的记录呢。 我浏览了这里和那里的教程,但它们描述了如何使用游标,但我有一个查询结果集。Android应用程序:如何在Listview中显示结果集?,android,mysql,jdbc,resultset,Android,Mysql,Jdbc,Resultset,我是新来的。。。。 我使用jdbc连接器连接到MySQL数据库。 运行查询并显示到textview没有问题, 但是如何在ListView中显示所有获取的记录呢。 我浏览了这里和那里的教程,但它们描述了如何使用游标,但我有一个查询结果集。 请提供帮助并感谢您一旦您运行了查询,您的结果集如下所示: sqlConnection myConn = new sqlConnection(); Statement stmt = myConn.getConnection().createStatement();
请提供帮助并感谢您一旦您运行了查询,您的结果集如下所示:
sqlConnection myConn = new sqlConnection();
Statement stmt = myConn.getConnection().createStatement();
ResultSet resSet = stmt.executeQuery(myQuery);
现在,您可以在一段时间内逐步读取数据并填写LinkedList:
List<Example> mExampleList = new LinkedList<Example>();
while (resSet.next()) {
Example mExample = new Example ();
mExample.ID = resSet.getInt("ExampleID");
mExample.name = resSet.getString("ExampleName");
[..]
mExampleList.add(mExample);
}
就这样
在本例中,我假设您有一个名为example的类来表示单个项;名为ExampleList的列表,其中包含要显示的项目;上下文“mContext”;一个布局“example_item”,表示列表中单个项目的视图 我使用的是这样优化的CustomAdapter:
private class CustomAdapterOptimized extends ArrayAdapter<Example> {
public CustomAdapterOptimized(Context context, int textViewResourceId, List<Example> objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getViewOptimize(position, convertView, parent);
}
public View getViewOptimize(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.example_item, null);
viewHolder = new ViewHolder();
viewHolder.exampleID= (TextView) convertView.findViewById(R.id.exampleID);
viewHolder.exampleName= (TextView) convertView.findViewById(R.id.exampleName);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Example example = (Example)getItem(position);
viewHolder.exampleID.setText(example.ID);
viewHolder.exampleName.setText(example.name);
return convertView;
}
private class ViewHolder {
public TextView exampleID;
public TextView exampleName;
}
}
私有类CustomAdapter优化扩展ArrayAdapter{
公共CustomAdapter已优化(上下文上下文、int textViewResourceId、列表对象){
超级(上下文、textViewResourceId、对象);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
返回getViewOptimize(位置、转换视图、父级);
}
公共视图getViewOptimize(int位置、视图转换视图、视图组父视图){
ViewHolder ViewHolder=null;
if(convertView==null){
LayoutInflater充气机=(LayoutInflater)
getContext().getSystemService(Context.LAYOUT\u充气机\u服务);
convertView=充气机。充气(R.layout.example_item,null);
viewHolder=新的viewHolder();
viewHolder.exampleID=(TextView)convertView.findViewById(R.id.exampleID);
viewHolder.exampleName=(TextView)convertView.findViewById(R.id.exampleName);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
示例=(示例)getItem(位置);
viewHolder.exampleID.setText(example.ID);
viewHolder.exampleName.setText(example.name);
返回视图;
}
私有类视窗持有者{
公共文本视图示例ID;
公共文本视图示例名;
}
}
Hi Andreaoid。非常感谢您的回复。正如我提到的,我对这件事太陌生了。你介意我问几个问题吗:尽管我有一个可视化的listview组件,但我是否必须创建一个新的类示例?对不起,如果我问了一些愚蠢的问题。请你把考试的课程代码发出来好吗。Tahnksheclass示例只是展示其工作原理的一种方式。它表示列表中的单个项:public类示例{public String ID;public String name;}谢谢。我曾尝试采用您的解决方案,但在这一行中出现错误示例示例=(示例)getItem(位置);什么是getItem(position)以及它应该声明在哪里?错误是:无法从实体转换为ProductItem ProductItem是表示单个项的my类,并且具有:公共类ProductItem{public String art_code;public String art_desc;}用示例替换实体,代码中存在键入错误。你最初的问题是关于从resultSet中获取数据,我想这个问题已经得到了回答。。。你现在可以开始了。
private class CustomAdapterOptimized extends ArrayAdapter<Example> {
public CustomAdapterOptimized(Context context, int textViewResourceId, List<Example> objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getViewOptimize(position, convertView, parent);
}
public View getViewOptimize(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.example_item, null);
viewHolder = new ViewHolder();
viewHolder.exampleID= (TextView) convertView.findViewById(R.id.exampleID);
viewHolder.exampleName= (TextView) convertView.findViewById(R.id.exampleName);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Example example = (Example)getItem(position);
viewHolder.exampleID.setText(example.ID);
viewHolder.exampleName.setText(example.name);
return convertView;
}
private class ViewHolder {
public TextView exampleID;
public TextView exampleName;
}
}