Как я могу изменить данные, полученные из базы данных? - PullRequest
0 голосов
/ 17 марта 2011

Я получаю свои данные из моей базы данных с помощью следующего кода:

private void fillData() {
        cursor = mDbAdapter.fetchAllSubjects();
        startManagingCursor(cursor);

        String[] from = new String[] { DatabaseAdapter.KEY_TITLE, DatabaseAdapter.KEY_LECTURER, DatabaseAdapter.KEY_BEGIN };
        int[] to = new int[] { R.id.title, R.id.lecturer, R.id.time };

        // Now create an array adapter and set it to display using our row
        SimpleCursorAdapter subjects = new SimpleCursorAdapter(this, R.layout.subject_row, cursor, from, to);

        setListAdapter(subjects);
    }

Теперь моя проблема в том, что я хочу добавить 3 других столбца из моей базы данных и хочу получить следующее:

  • "(" + DatabaseAdapter.KEY_TYPE + ")" + DatabaseAdapter.KEY_TITLE
  • DatabaseAdapter.KEY_LECTURER
  • новая дата (DatabaseAdapter.KEY_BEGIN)
  • новая дата (DatabaseAdapter.KEY_END) -> эти два должны быть в одном TextView способом dd.MM. ЧЧ: мм (это от НАЧАЛА) - ЧЧ: мм (это от КОНЦА)

Я не знаю, как я могу это сделать - пожалуйста, помогите мне:)

1 Ответ

0 голосов
/ 17 марта 2011

Хорошо. Наконец-то я понял, что вы действительно хотите.

Вместо непосредственного использования «SimpleCursorAdapter» вы можете создать свой собственный адаптер Cursor, внутри которого вы можете обрабатывать данные по своему усмотрению.Создайте новый адаптер "SubjectsAdapter.java".В этом адаптере вы переопределите «bindView» и «newView».Это позволяет нам применять вид к курсору.Но прежде чем сделать это, мы можем изменить данные с курсора.

Это даст вам представление о том, что нужно сделать.

    private void fillData() 
    {
        cursor = mDbAdapter.fetchAllSubjects();
        startManagingCursor(cursor);


        SubjectsAdapter subjectsAdapter = new SubjectsAdapter(this, cursor);
        setListAdapter(subjectsAdapter);
    }


//SubjectsAdapter.java - make changes to fix bugs/compilation errors. This is untested.
public class SubjectsAdapter extends ResourceCursorAdapter 
{
    public SubjectsAdapter(Context context, Cursor cur) {
        super(context, R.layout.subject_row, cur);
    }

    @Override
    public View newView(Context context, Cursor cur, ViewGroup parent) 
    {
         LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         return li.inflate(R.layout.subject_row, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) 
    {           
        TextView titleText = (TextView)view.findViewById(R.id.title);
          titleText.setText(cursor.getString(cursor.getColumnIndex(DatabaseAdapter.KEY_TITLE)));

        //You can add code to retrieve other columns here.

        //This is where you retrieve the date in long format from cursor, convert it to a required format, and then using it.
        TextView beginTimeText = (TextView)view.findViewById(R.id.time);            
        Long lBeginDate = cursor.getLong(cursor.getColumnIndex(DatabaseAdapter.KEY_BEGIN));
        String sBeginDate = getFormattedDate(lBeginDate);           
        beginTimeText.setText(sBeginDate);
   }

    private String getFormattedDate(Long lDate)
    {
         SimpleDateFormat smdf = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a");       
        String sDate = smdf.format( lDate ));
        return sDate;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...