2016-12-18 11 views
-1

SQLiteテーブルとリストビューに問題があります。私はテーブルとデータを含むDBを実装しており、それらをリストビューで表示することができます。私はあまりにもうまくいっているエントリーを編集したい。注文だけが、私が望むほど良いものではありません。ListViewでSQLiteテーブルの出力を並べ替え

私はcolumn 1column 2が注文した私のエントリを表示し、その後のエントリを編集したい場合は、私は(xcursor.moveToNext()で)テーブル内の位置のために、リスト内の位置を使用したこと、問題を抱えています。

は、今私は

SELECT * FROM table ORDER BY column 

削除すると、テーブル全体を読み出して注文したデータを持つテーブルを補充して、それを解決しました。それからもう一度読んでください。

しかし、これは安全な方法ではありません。アプリがクラッシュして仕事をしていると、データが失われる可能性があります。私はそれを表示せずにリストビューで編集する必要がある参照を取得するための良い方法はありますか?または、私はリストビューのカスタムListViewレイアウトと余分なデータクラスで作業する必要がありますので、データベース全体を編集する必要はなく、データを編集して編集した後、データベースのポイントに書き直しますか?

SQLiteドキュメントのような機能が見つかりませんでした。しかし、おそらく私は十分に深く見ていませんでした。

ありがとうございます!

+0

'順序付けされたデータで表を削除して補充する '** ... WHY?!**代わりに' ORDER BY'を使用してください。それはデータベースから注文データを検索する正しい方法です。 –

+0

注文データを取得したいと思います。私はそれをリストビューに表示したい。私がdbviewエントリの参照としてlistviewitemの位置を使用するとき、私は編集のための正しいエントリを取得しません。問題は、listviewのitempositionから独立した参照値を得る方法でした。 – Ian

+0

これは、ListViewの項目が表のIDに接続されていると考えられるからです。 **はありません**。 id = 4のレコードを削除したとします。あなたは今id = 0,1,2,3,5,6のレコードを持っています... –

答えて

1

データベース全体を削除して再入力しないでください。これは、何度も読んだり、削除したりするためのひどい浪費のようです。

編集したいアイテムに属するIDを追跡する必要があります。編集が完了したら、データベース内の特定の項目をIDで参照して更新します。

私は確信していますが、それは "列"の列にあります。しかし、2つの方法で表をソートする場合は、別の列に属性を指定してソートするか、注文時に昇順/降順を使用して順序を変更することができます。

+0

IDの追跡方法は?テーブルを読み込む関数は 'List 'を返します。私はIDを表示したくありません。テーブルデータを格納するためのデータクラスを使用してオブジェクトを取得する必要がありますか、配列を使用して配列の値からリストを作成する必要がありますか? 'array [0] [0]'から 'array [n] [m]'までは? Nは行番号を表し、mは行のデータフィールドの番号を表します。 – Ian

+0

おそらく個々の行にタグを使用します。チェックしてください。http://stackoverflow.com/questions/5291726/what-is-the-main-purpose-of-settag-gettag-methods-of-view これを行うと、IDの行を「尋ねる」ことができますその行に表示されている項目に属しています。基本的にrow.getTagはデータベース内の要素のIDを返します。 –

関連する問題