Передача данных из listview при помощи intent

Есть список, который получает данные из базы. Хочу, чтобы по нажатию на элемент списка данные из него передавались на след активити через intent.putExtra. Но что мне нужно передать?

MainActivity (В нем listView)

public class MainActivity extends AppCompatActivity  {

ListView listView;
DataBase dataBase;
SQLiteDatabase sqLiteDatabase;
FloatingActionButton fabMain;


MySimpleAdapter simpleCursorAdapter;
Cursor cursor;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    fabMain = findViewById(R.id.fab_main);
    listView = findViewById(R.id.rv_list);


    dataBase = new DataBase(this);
    sqLiteDatabase = dataBase.getWritableDatabase();


    //переход на след активити и добавления в базу
    fabMain.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });


    //вывод данных из базы
    cursor = sqLiteDatabase.query(dataBase.DATABASE_TABLE, null, null, null, null, null, null);
    simpleCursorAdapter = new MySimpleAdapter(MainActivity.this, cursor, 0);
    listView.setAdapter(simpleCursorAdapter);






    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(MainActivity.this, TaskActivity.class);
            //на этом месте проблема
            //intent.putExtra("value1", .....)
            startActivity(intent);

        }
    });

}


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

    cursor = sqLiteDatabase.query(dataBase.DATABASE_TABLE, null, null, null, null, null, null);
    simpleCursorAdapter = new MySimpleAdapter(MainActivity.this, cursor, 0);
    listView.setAdapter(simpleCursorAdapter);

}

@Override
protected void onDestroy() {
    cursor.close();
    dataBase.close();
    super.onDestroy();
}
}

Адаптер

public class MySimpleAdapter extends CursorAdapter {

DataBase dataBase;

public MySimpleAdapter(Context context,Cursor c, int flags) {
    super(context,  c,  flags);
}



@Override
public void bindView(View view, Context context, Cursor cursor) {
    TextView tvTitle = view.findViewById(R.id.tv_title_item_list);
    TextView tvText = view.findViewById(R.id.tv_text_item_list);


    String title = cursor.getString(cursor.getColumnIndex(dataBase.KEY_TITLE));
    String text = cursor.getString(cursor.getColumnIndex(dataBase.KEY_TEXT));



    tvTitle.setText(title);
    tvText.setText(text);

}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    return LayoutInflater.from(context).inflate(R.layout.item_list, parent, false);
}}

Ответы (2 шт):

Автор решения: pavlofff

Через интент нужно передавать только id кликнутой записи в БД (это четвертый параметр long id колбэка onItemClick()), все остальные данные нужно получать уже в новой активити по этому id, новым запросом в бд.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent intent = new Intent(MainActivity.this, TaskActivity.class);
        intent.putExtra("value1", id) // передаем 4 параметр возвращаемый onItemClick()
        startActivity(intent);

    }
});

при этом таблица, в которую делается запрос, должна содержать колонку с именем _id (не id, ID, Id, _ID и т.п.) и параметрами INTEGER PRIMARY KEY AUTOINCREMENT. Так же эта колонка должна быть включена в выборку курсора

→ Ссылка
Автор решения: Тагир Идрисов

Решил эту задачу как мне предложил @pavlofff Передал Lond id через intent.putExtra("id", id); и уже в следующем активити вновь обратился к базе по id

//Получение заметки по id из баззы
    final String selection = "_id = ?";
    final String[] selectionArgs = new String[] {valueId};
    cursor = sqLiteDatabase.query(DataBase.DATABASE_TABLE, null, selection, selectionArgs, null, null, null);
    if(cursor.moveToFirst()){
       a = cursor.getString(cursor.getColumnIndex(dataBase.KEY_TITLE));
       b = cursor.getString(cursor.getColumnIndex(dataBase.KEY_TEXT));

       tvTitleActivityTask.setText(a);
       tvTextActivityTask.setText(b);
    } else
        Toast.makeText(TaskActivity.this, "Не получилось", Toast.LENGTH_LONG).show();


 //Удаление заметки из базы
    btnDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sqLiteDatabase.delete(dataBase.DATABASE_TABLE, selection, selectionArgs);
            Toast.makeText(TaskActivity.this, "Заметка удалена!", Toast.LENGTH_SHORT).show();
            finish();
        }
    });
→ Ссылка