0

私はこれが初めてです.... MySQLデータベースに接続し、jdbcコネクタを使用しています。クエリを実行してテキストビューに表示しても問題ありませんが、取得したすべてのレコードを ListView に表示するにはどうすればよいですか。あちこちで見つかったチュートリアルを実行しましたが、カーソルを使用してそれを行う方法について説明していますが、クエリの結果として結果セットがあります。助けてください、ありがとう

4

1 に答える 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 に答える