16

Tôi đang làm việc trên ứng dụng Hướng dẫn TV sử dụng ListActivity hiển thị chương trình truyền hình cho một kênh/một ngày tại một thời điểm. Tôi đang sử dụng một RelativeLayout cho ListView mục và tôi muốn ListView để tìm một cái gì đó như thế này:Sửa đổi dữ liệu của SimpleCursorAdapter

07:00 The Breakfast Show 
     Latest news and topical reports 
08:00 Tom and Jerry 
     More cat and mouse capers 

tôi nhận được dữ liệu cho ListView mục bằng cách sử dụng đoạn mã sau:

Cursor cursor = db.rawQuery(SELECT blah,blah,blah); 
String[] columnNames = new String[]{"start_time","title", "subtitle"}; 
int[] resIds = new int[]{R.id.start_time_short, R.id.title, R.id.subtitle}; 
adapter = new SimpleCursorAdapter(this, R.layout.guide_list_item, cursor, columnNames, resIds); 

Vấn đề của tôi là trường start_timedatetime với định dạng sau:

2011-01-23 07:00:00 

vì vậy những gì tôi nhận được là:

2011-01-23 07:00:00 The Breakfast Show 
        Latest news and topical reports 
2011-01-23 08:00:00 Tom and Jerry 
        More cat and mouse capers 

Những gì tôi muốn làm là định dạng trên sử dụng SimpleDateFormat ("HH:mm") vì vậy tôi chỉ nhận được những hour:minute một phần của lĩnh vực start_time.

Tôi đã tìm thấy giao diện SimpleCursor.ViewBinder cho biết nó có thể là thứ tôi muốn nhưng tôi không thể tìm ra cách sử dụng nó. Nếu tôi đúng về ViewBinder, tôi đánh giá cao một số gợi ý để lấy mẫu mã về cách sử dụng nó. Nếu không, làm cách nào khác tôi có thể đạt được thay đổi trường start_time để chỉ hiển thị định dạng HH:mm?

Trả lời

28

Bạn có thể làm một cái gì đó như thế này:

adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
    @Override 
    public boolean setViewValue(View view, Cursor cursor, int column) { 
     if(column == 0){ // let's suppose that the column 0 is the date 
      TextView tv = (TextView) view; 
      String dateStr = cursor.getString(cursor.getColumnIndex("name_of_the_date_column")); 
      // here you use SimpleDateFormat to bla blah blah 
      tv.setText(theFormatedDate); 
      return true; 
     } 
     return false; 
    } 
}); 
+0

Cảm ơn bạn, giải thích nó rất tốt. Tôi đã làm lại ví dụ của bạn để phù hợp với mã của tôi và nó hoạt động hoàn hảo cho tôi. – Squonk

+1

Điều này chỉ lưu mông của tôi cố gắng để sắp xếp lại số lượng hàng từ một con trỏ, vì vậy cảm ơn bạn sir. Mã của tôi là như sau: HistoryAdapter.setViewBinder (SimpleCursorAdapter.ViewBinder mới() { \t \t \t @ Override \t \t \t public boolean setViewValue (Xem xem, con trỏ trỏ, int cột) { \t \t \t \t if (cột == 0) {// giả sử rằng cột 0 là \t \t \t \t \t \t \t \t \t // ngày 012.\t \t \t \t \t Chế độ xem TextView tv = (TextView); \t \t \t \t \t Chuỗi rownum = String.valueOf (cursor.getPosition() + 1); \t \t \t \t \t // đây bạn sử dụng SimpleDateFormat để bla blah blah \t \t \t \t \t tv.setText (rownum); \t \t \t \t \t trả về true; \t \t \t \t} \t \t \t \t return false; \t \t \t} \t \t}); –

+0

@Cristian Xin vui lòng, bạn có nghĩ rằng bạn có thể trợ giúp với http://stackoverflow.com/questions/27257416/android-how-can-i-pass-data-related-to-two-tables-to-a-the này -insert-method-of-a? – eddy

Các vấn đề liên quan