Я получаю имя элемента, описание элемента и цену элемента из базы данных, когда пользователь нажимает на элемент, он переходит к операции редактирования, где пользователь может обновить или удалить данные, но когда я нажимаю на элемент списка, он возвращает меня к Основная деятельность
Когда пользователь нажимает на данные представления, он отображает представление списка
после нажатия на просмотр списка пользователь должен перейти к редактированию данных активности, где при редактировании данных данные активности будут отображаться в полях редактирования текстов для обновления или удаления
мой код работал нормально с одним именем элемента параметра, но когда я использовал описание элемента и цену элемента, появляется эта ошибка
![main activity](https://i.stack.imgur.com/Xi5jc.png)
![edit data activity](https://i.stack.imgur.com/oaKQH.png)
private static final String TAG = "ListDataActivity";
DatabaseHelper mDatabaseHelper;
private ListView mListView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_data);
mListView = (ListView) findViewById(R.id.listView);
mDatabaseHelper = new DatabaseHelper(this);
populateListView();
}
private void populateListView() {
Log.d(TAG, "populateListView: Displaying data in the ListView.");
Cursor data = mDatabaseHelper.getData();
ArrayList<String> listData = new ArrayList<>();
while(data.moveToNext()){
listData.add(data.getString(1));
}
ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listData);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String name = adapterView.getItemAtPosition(i).toString();
String des = adapterView.getItemAtPosition(i).toString();
String pri = adapterView.getItemAtPosition(i).toString();
Log.d(TAG, "onItemClick: You Clicked on " + name);
Cursor data = mDatabaseHelper.getItemID(name, des, pri); //get the id associated with that name
int itemID = -1;
while(data.moveToNext()){
itemID = data.getInt(0);
}
if(itemID > -1){
Log.d(TAG, "onItemClick: The ID is: " + itemID);
Intent intent = new Intent(ListDataActivity.this, EditDataActivity.class);
Bundle extras = new Bundle();
extras.putInt("id",itemID);
extras.putString("name",name);
extras.putString("description",des);
extras.putString("price",pri);
intent.putExtras(extras);
startActivity(intent);
}
else{
toastMessage("No ID associated with that name");
}
}
});
}
private void toastMessage(String message){
Toast.makeText(this,message, Toast.LENGTH_SHORT).show();
}
новый обновленный код, я внес следующие изменения
package com.example.saveanddisplaysql;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class ListDataActivity extends AppCompatActivity {
private static final String TAG = "ListDataActivity";
DatabaseHelper mDatabaseHelper;
private ListView mListView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_data);
mListView = (ListView) findViewById(R.id.listView);
mDatabaseHelper = new DatabaseHelper(this);
populateListView();
}
private void populateListView() {
Log.d(TAG, "populateListView: Displaying data in the ListView.");
Cursor data = mDatabaseHelper.getData();
class Model {
String name;
String desc;
int price;
}
ArrayList< Model> listData = new ArrayList<>();
while(data.moveToNext()){
Model model = new Model();
model.name = data.getString(1);
model.desc = data.getString(2);
model.price = data.getInt(3);
listData.add(model); }
ListAdapter adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, listData);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Model model = (Model)adapterView.getItemAtPosition(i);
String name = model.name;
String des = model.des;
String pri = model.pri;
Log.d(TAG, "onItemClick: You Clicked on " + name);
Cursor data = mDatabaseHelper.getItemID(name, des, pri); //get the id associated with these
int itemID = -1;
while(data.moveToNext()){
itemID = data.getInt(0);
}
if(itemID > -1){
Log.d(TAG, "onItemClick: The ID is: " + itemID);
Intent intent = new Intent(ListDataActivity.this, EditDataActivity.class);
Bundle extras = new Bundle();
extras.putInt("id",itemID);
extras.putString("name",name);
extras.putString("description",des);
extras.putString("price",pri);
intent.putExtras(extras);
startActivity(intent);
}
else{
toastMessage("No ID associated with that name");
}
}
});
}
private void toastMessage(String message){
Toast.makeText(this,message, Toast.LENGTH_SHORT).show();
}
}
![enter image description here](https://i.stack.imgur.com/YedOA.png)
Logcat:
2019-04-11 10: 51: 34.331 32717-32717 /? I / art: Позднее включение -Xcheck: jni
2019-04-11 10: 51: 34.351 32717-32717 /? D / TidaProvider: TidaProvider ()
2019-04-11 10: 51: 34.364 32717-32717 / com.example.saveanddisplaysql W / ReflectionUtils: java.lang.NoSuchMethodException: android.os.MessageQueue # enableMonitor () # bestmatch
в miui.util.ReflectionUtils.findMethodBestMatch (ReflectionUtils.java:338)
в miui.util.ReflectionUtils.findMethodBestMatch (ReflectionUtils.java:375)
в miui.util.ReflectionUtils.callMethod (ReflectionUtils.java:800)
в miui.util.ReflectionUtils.tryCallMethod (ReflectionUtils.java:818)
на android.os.BaseLooper.enableMonitor (BaseLooper.java:47)
на android.os.Looper.prepareMainLooper (Looper.java:112)
на android.app.ActivityThread.main (ActivityThread.java:6221)
в java.lang.reflect.Method.invoke (родной метод)
на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:904)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:794)