我是新手......我有一个到 MySQL 数据库的连接并使用 jdbc 连接器。运行查询并显示到 textview 没问题,但是如何在 ListView 中显示所有获取的记录。我浏览了这里和那里找到的教程,但它们描述了如何使用光标进行操作,但由于我的查询,我得到了结果集。请帮助,谢谢
问问题
5607 次
1 回答
2
运行查询后,您将获得 ResultSet,如下例所示:
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);
}
注意:记得关闭连接!
列表“mExampleList”现在可以成为适配器的内容:
CustomAdapterOptimized mAdapter = new CustomAdapterOptimized(mContext, R.layout.example_item, mExampleList);
mListView.setAdapter(mAdapter);
而已。
在这个例子中,我假设你有一个名为 Example 的类来表示单个项目;一个名为 ExampleList 的列表,其中包含要显示的项目;上下文“mContext”;一个布局“example_item”,表示列表中单个项目的视图。
我正在使用这样的 CustomAdapterOptimized:
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;
}
}
于 2013-07-12T15:51:48.303 回答