Данные из базы данных не будут отображаться в RecyclerView. Страница вылетает и возвращается на две страницы назад (HomeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Данные из базы данных не будут отображаться в RecyclerView. Страница вылетает и возвращается на две страницы назад (Home

Сообщение Anonymous »


Я пытаюсь отобразить свои данные в RecyclerView, но они не отображаются. Всякий раз, когда я открываю страницу для отображения данных, она просто вылетает и возвращается на две страницы назад.

Это код моей ToolActivity (где должны отображаться данные).

пакет com.example.myapplication; импортировать androidx.appcompat.app.AppCompatActivity; импортировать androidx.recyclerview.widget.LinearLayoutManager; импортировать androidx.recyclerview.widget.RecyclerView; импортировать android.database.Cursor; импортировать android.os.Bundle; импортировать android.widget.ArrayAdapter; импортировать android.widget.Button; импортировать android.widget.EditText; импортировать android.widget.ListAdapter; импортировать android.widget.ListView; импортировать android.widget.Toast; импортировать java.util.ArrayList; публичный класс ToolsActivity расширяет AppCompatActivity { DBHelper myDB; RecyclerView recyclerView; ArrayList ToolId, ToolName, ToolModule, ToolDescription; CustomAdapter CustomAdapter; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_tools); myDB = новый DBHelper(ToolsActivity.this); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); ToolId = новый ArrayList(); ToolName = новый ArrayList(); ToolModule = новый ArrayList(); ToolDescription = новый ArrayList(); StoreDataInArrays(); customAdapter = новый CustomAdapter(ToolsActivity.this,toolId,toolName,toolModule,toolDescription); recyclerView.setAdapter(customAdapter); recyclerView.setLayoutManager(новый LinearLayoutManager(ToolsActivity.this)); } недействительный storeDataInArrays () { Курсор курсора = myDB.readAllData(); если(cursor.getCount() == 0) { Toast.makeText(this, «Нет данных», Toast.LENGTH_SHORT).show(); } еще { в то время как (cursor.moveToNext()) { ToolId.add(cursor.getString(0)); имя_инструмента.add(cursor.getString(1)); ToolModule.add(cursor.getString(2)); ToolDescription.add(cursor.getString(3)); } } } } Это код моего пользовательского адаптера:

пакет com.example.myapplication; импортировать android.content.Context; импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать android.widget.LinearLayout; импортировать android.widget.TextView; импортировать androidx.annotation.NonNull; импортировать androidx.recyclerview.widget.RecyclerView; импортировать java.util.ArrayList; общедоступный класс CustomAdapter расширяет RecyclerView.Adapter { частный контекст контекста; частный ArrayList идентификатор_инструмента, имя_инструмента, модуль_инструмента, описание_инструмента; CustomAdapter (Контекст контекста, ArrayList Tool_id, ArrayList имя_инструмента, ArrayList Tool_module, ArrayList Tool_Description) { this.context = контекст; this.tool_id =tool_id; this.имя_инструмента = имя_инструмента; this.tool_module =tool_module; this.tool_description = описание_инструмента; } @NonNull @Override public CustomAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup родительский, int viewType) { LayoutInflater инфлятор = LayoutInflater.from(контекст); Просмотр представления = inflater.inflate(R.layout.costum_item_list, родительский, false); вернуть новый MyViewHolder(представление); } @Override public void onBindViewHolder(@NonNull MyViewHolder Holder, int Position) { Holder.tool_id_txt.setText(String.valueOf(tool_id.get(position))); Holder.tool_name_txt.setText(String.valueOf(tool_name.get(position))); Holder.tool_module_txt.setText(String.valueOf(tool_module.get(position))); Holder.tool_description_txt.setText(String.valueOf(tool_description.get(position))); } @Override общественный ИНТ getItemCount () { вернуть Tool_id.size(); } публичный класс MyViewHolder расширяет RecyclerView.ViewHolder { TextView Tool_id_txt, имя_инструмента_txt, Tool_module_txt, Tool_description_txt; Линейный макет public MyViewHolder(@NonNull Посмотреть itemView) { супер (предметView); tool_id_txt = itemView.findViewById(R.id.toolID); Tool_name_txt = itemView.findViewById(R.id.toolName); tool_module_txt = itemView.findViewById(R.id.toolModule); tool_description_txt = itemView.findViewById(R.id.toolDescription); } } } А это мой файл DBHelper:

пакет com.example.myapplication; импортировать android.content.ContentValues; импортировать android.content.Context; импортировать android.database.Cursor; импортировать android.database.sqlite.SQLiteDatabase; импортировать android.database.sqlite.SQLiteOpenHelper; импортировать android.widget.Toast; импортировать androidx.annotation.Nullable; публичный класс DBHelper расширяет SQLiteOpenHelper { частный контекст контекста; частная статическая окончательная строка DATABASE_NAME = "ToolRegister.db"; частный статический окончательный интервал DATABASE_VERSION = 1; частная статическая окончательная строка TABLE_NAME = "tool_register"; частная статическая окончательная строка COLUMN_ID = «toolsID»; частная статическая окончательная строка COLUMN_NAME = "tools_name"; частная статическая окончательная строка COLUMN_MODULE = "tools_module"; частная статическая окончательная строка COLUMN_DESCRIPTION = "tools_description"; public DBHelper(@Nullable Context context) { супер (контекст, DATABASE_NAME, null, DATABASE_VERSION); this.context = контекст; } @Override общественная недействительность onCreate (SQLiteDatabase db) { Строковый запрос = "СОЗДАТЬ ТАБЛИЦУ" + TABLE_NAME + " (" + COLUMN_ID + " АВТОИНКРЕМЕНТ ПЕРВИЧНОГО КЛЮЧА ЦЕЛОГО ЧИСЛА, " + COLUMN_NAME + " ТЕКСТ, " + COLUMN_MODULE + " ТЕКСТ " + COLUMN_DESCRIPTION + " ТЕКСТ);"; db.execSQL (запрос); } @Override public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ " + TABLE_NAME); onCreate (дб); } void addTools (имя строки, модуль строки, описание строки) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues ​​cv = новый ContentValues(); cv.put(COLUMN_NAME, имя); cv.put(COLUMN_MODULE, модуль); cv.put(COLUMN_DESCRIPTION, описание); длинный результат = db.insert(TABLE_NAME, null, cv); если (результат == -1) { Toast.makeText(context, «Ошибка», Toast.LENGTH_SHORT).show(); } еще { Toast.makeText(context, «Добавлено успешно», Toast.LENGTH_SHORT).show(); } } Курсор readAllData () { Строковый запрос = "SELECT * FROM" + TABLE_NAME; SQLiteDatabase db = this.getWritableDatabase(); Курсор курсор = ноль; если (дб! = ноль) { курсор = db.rawQuery(запрос, ноль); } вернуть курсор; } } Как это исправить?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»