2016-05-16 13 views
0

私は絶対初心者です。 リストビューにsqliteテーブルがあります。私は2つの質問があります。ソートリストビューは最後に変更されたsqliteでどのように満たされましたか?

1-リストビューを最後に変更したアイテムでソートするにはどうすればよいですか?

2リストビューに行かなくても、最初のページにボタンを作成して最後に変更したアイテムを開くことができますか?ここで

私のコードです:

そのリストビュー -

public class MainActivity extends ListActivity { 

// Declare Variables 
public static final String ROW_ID = "row_id"; 
private static final String TITLE = "title"; 
private ListView   noteListView; 
private CursorAdapter  noteAdapter; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    stopService(new Intent(MainActivity.this, MyService.class)); 

    // Locate ListView 
    noteListView = getListView(); 

    // Prepare ListView Item Click Listener 
    noteListView.setOnItemClickListener(viewNoteListener); 

    // Map all the titles into the ViewTitleNotes TextView 
    String[] from = new String[]{ TITLE }; 
    int[] to = new int[]{ R.id.ViewTitleNotes }; 

    // Create a SimpleCursorAdapter 
    noteAdapter = new SimpleCursorAdapter(MainActivity.this, 
      R.layout.list_zekr, null, from, to); 

    // Set the Adapter into SimpleCursorAdapter 
    setListAdapter(noteAdapter); 
} 

// Capture ListView item click 
OnItemClickListener viewNoteListener = new OnItemClickListener() { 

             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 

              // Open ViewNote activity 
              Intent viewnote = new Intent(MainActivity.this, CounterActivity.class); 
              viewnote.putExtra(ROW_ID, arg3); 
              startActivity(viewnote); 
             } 
            }; 


@Override 
protected void onResume() { 
    super.onResume(); 

    // Execute GetNotes Asynctask on return to MainActivity 
    new GetNotes().execute((Object[]) null); 
} 


@Override 
protected void onStop() { 
    Cursor cursor = noteAdapter.getCursor(); 

    // Deactivates the Cursor 
    if (cursor != null) 
     cursor.deactivate(); 

    noteAdapter.changeCursor(null); 
    super.onStop(); 
} 


// Create an options menu 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Menu Title 
    menu.add("ذکر جدید") 
      .setOnMenuItemClickListener(this.AddNewNoteClickListener) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    return super.onCreateOptionsMenu(menu); 
} 

// Capture menu item click 
OnMenuItemClickListener AddNewNoteClickListener = new OnMenuItemClickListener() { 

                public boolean onMenuItemClick(MenuItem item) { 

                 // Open AddEditNotes activity 
                 Intent addnote = new Intent(MainActivity.this, AddEditNotes.class); 
                 startActivity(addnote); 

                 return false; 

                } 
               }; 


// GetNotes AsyncTask 
public class GetNotes extends AsyncTask<Object, Object, Cursor> { 

    DatabaseConnector dbConnector = new DatabaseConnector(MainActivity.this); 


    @Override 
    protected Cursor doInBackground(Object... params) { 
     // Open the database 
     dbConnector.open(); 

     return dbConnector.ListAllNotes(); 
    } 


    @Override 
    protected void onPostExecute(Cursor result) { 
     noteAdapter.changeCursor(result); 

     // Close Database 
     dbConnector.close(); 
    } 

} 

}

その私のDatabaseConnector:ADVANで

public class DatabaseConnector { 
// Declare Variables 
private static final String DB_NAME   = "database"; 
private static final String TABLE_NAME  = "tablenotes"; 
private static final String TITLE   = "title"; 
private static final String ID    = "_id"; 
private static final String NOTE    = "note"; 
private static final String COUNTS   = "counts"; 
private static final String LIMITS   = "limits"; 
private static final int DATABASE_VERSION = 2; 
private SQLiteDatabase  database; 
private DatabaseHelper  dbOpenHelper; 


public DatabaseConnector(Context context) { 
    dbOpenHelper = new DatabaseHelper(context, DB_NAME, null, DATABASE_VERSION); 

} 


// Open Database function 
public void open() throws SQLException { 
    // Allow database to be in writable mode 
    database = dbOpenHelper.getWritableDatabase(); 
} 


// Close Database function 
public void close() { 
    if (database != null) 
     database.close(); 
} 


// Create Database function 
public void InsertNote(String title, String note, String counts, String limits) { 
    ContentValues newCon = new ContentValues(); 
    newCon.put(TITLE, title); 
    newCon.put(NOTE, note); 
    newCon.put(COUNTS, counts); 
    newCon.put(LIMITS, limits); 

    open(); 
    database.insert(TABLE_NAME, null, newCon); 
    close(); 
} 


// Update Database function 
public void UpdateNote(long id, String title, String note, String counts, String limits) { 
    ContentValues editCon = new ContentValues(); 
    editCon.put(TITLE, title); 
    editCon.put(NOTE, note); 
    editCon.put(COUNTS, counts); 
    editCon.put(LIMITS, limits); 

    open(); 
    database.update(TABLE_NAME, editCon, ID + "=" + id, null); 
    close(); 
} 


// Delete Database function 
public void DeleteNote(long id) { 
    open(); 
    database.delete(TABLE_NAME, ID + "=" + id, null); 
    close(); 
} 


// List all data function 
public Cursor ListAllNotes() { 
    return database.query(TABLE_NAME, new String[]{ ID, TITLE }, null, 
      null, null, null, TITLE); 
} 


// Capture single data by ID 
public Cursor GetOneNote(long id) { 
    return database.query(TABLE_NAME, null, ID + "=" + id, null, null, 
      null, null); 
} 

}

感謝ce。

UPDATE!

[OK]を、私は「時間」 の名前と私のテーブルのカラムを作成し、私はこのようにそれを整数として、時間を挿入することができます。

20160516100740は、だから今、テーブルのすべての行は、そのような時間を持って、今私は何ができますか?

更新!あなたは(サンプル日付文字列である必要があり、データベース内のフィールドを追加する必要があります(

public Cursor listAllSortedNotes() { 
    String selectQuery = "SELECT * FROM " + TABLE_NAME + " ORDER BY time DESC"; 
    return database.rawQuery(selectQuery, null); 
+0

最後に終了しました。 TIMEの後に+ "DESC"を書いて、その作品は素晴らしい!私とMRアレックスに感謝します! –

答えて

0

[OK]を、私は私のリストのアクティビティ(MainActivity.java) が、その動作していない内にこれを書きました: yyyy-MM-dd HH:mm:ss)。そして、ときに、データを更新し、現在の日付と時間でそれを更新します。その後、あなたはこのような何かを行うことができますあなたのケースでは

SELECT * 
FROM Table 
ORDER BY datetime (dateColumn) DESC 

を使用して、最近の更新データを取得するために、選択クエリを使用することができます。

public Cursor listAllSortedNotes() { 
    String selectQuery = "SELECT * FROM "+ TABLE_NAME + " ORDER BY datetime(dateColumn) DESC"; 
    return database.rawQuery(selectQuery, null); 
} 
+0

ありがとうございますが、どこに「SELECT *」を置くべきですか?まさに? –

+0

ソートされたリストを返すメソッドを作成するだけです。データベースに上記のクエリを使用してデータを返す –

+0

私はどのようにわからない。 –

関連する問題