Будет ли эта ошибка запуска причиной возврата null каждый раз, когда я сохраняю данные в базу данных sql с помощью ayncs?:
E/KernelCpuSpeedReader: Failed to read cpu-freq
java.io.FileNotFoundException: /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:452)
at java.io.FileInputStream.<init>(FileInputStream.java:76)
at java.io.FileInputStream.<init>(FileInputStream.java:103)
at java.io.FileReader.<init>(FileReader.java:66)
Я пытаюсь использовать Async и базу данных sqlite для хранения четырех входных данных:
- Код товара
- Наименование товара
- Количество
- Цена
Основной
У меня есть специальный адаптер, который должен помочь сохранить, а затем отобразить входные данные в списке массивов. Тем не менее, каждая попытка сохранить входные данные приводит к записи «нулевого», когда я нажимаю «Сохранить».
Есть ли что-то необычное в том, как этот адаптер был построен?
BackgroundTask.JAVA
public class BackgroundTask extends AsyncTask<String, Product, String> {
Context ctx;
ProductAdapter productAdapter;
Activity activity;
ListView listView;
BackgroundTask(Context ctx){
this.ctx=ctx;
activity=(Activity)ctx;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
String method = params[0];
DbOperations dbOperations = new DbOperations(ctx);
if(method.equals("add_info")){ // when save button it clicked, it runs backgroundTask.execute("add _info", id, name, price, quantity);
String Id= params[1];
String Name = params[2];
int Price = Integer.parseInt(params[3]);
int qty = Integer.parseInt(params[4]);
SQLiteDatabase sqLiteDatabase =dbOperations.getWritableDatabase();
dbOperations.addInformations(sqLiteDatabase, Id, Name,Price, qty);
return "one row inserted";
}
else if(method.equals("get_info")){
listView=activity.findViewById(R.id.display_listview);
SQLiteDatabase sqLiteDatabase = dbOperations.getReadableDatabase();
Cursor cursor = dbOperations.getInformations(sqLiteDatabase);
productAdapter=new ProductAdapter(ctx, R.layout.display_product_row);
String id, name;
int price, qty;
while(cursor.moveToNext()){
id = cursor.getString(cursor.getColumnIndex(ProductContract.ProductEntry.ID));
name= cursor.getString(cursor.getColumnIndex(ProductContract.ProductEntry.NAME));
price = cursor.getInt(cursor.getColumnIndex(ProductContract.ProductEntry.PRICE));
qty = cursor.getInt(cursor.getColumnIndex(ProductContract.ProductEntry.QTY));
Product product = new Product(id, name, price, qty);
publishProgress(product);
}
return "get_info";
}
return "null"; <------ Here it's always being returned instead of saving above data
}
@Override
protected void onProgressUpdate(Product... values) {
productAdapter.add(values[0]);
}
@Override
protected void onPostExecute(String result) {
if(result.equals("get_info")){
listView.setAdapter(productAdapter);
}
else {
Toast.makeText(ctx, result, Toast.LENGTH_LONG).show();
}
}
}
DisplayProduct.Java
public class DisplayProduct extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_product_layout);
BackgroundTask backgroundTask = new BackgroundTask(this);
backgroundTask.execute("get_info");
}
}
MainActivity.JAVA
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void addProduct(View view) {
startActivity(new Intent(this, save_info.class));
}
public void displayProducts(View view) {
startActivity(new Intent(this, DisplayProduct.class));
}
}
ProductAdapter.JAVA
public class ProductAdapter extends ArrayAdapter {
List list = new ArrayList();
public ProductAdapter(Context context, int resource) {
super(context, resource);
}
public void add(Product object) {
list.add(object);
super.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ProductHolder productHolder;
if(row == null){
LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = (View)layoutInflater.inflate(R.layout.display_product_row, parent, false);
productHolder = new ProductHolder();
productHolder.tx_id=row.findViewById(R.id.t_id);
productHolder.tx_name=row.findViewById(R.id.t_name);
productHolder.tx_price=row.findViewById(R.id.t_price);
productHolder.tx_quantity=row.findViewById(R.id.t_qty);
row.setTag(productHolder);
}else
{
productHolder = (ProductHolder)row.getTag();
}
Product product = (Product)getItem(position);
productHolder.tx_name.setText(product.getId().toString());
productHolder.tx_id.setText(product.getId().toString());
productHolder.tx_price.setText(Integer.toString(product.getPrice()));
productHolder.tx_quantity.setText(Integer.toString(product.getQty()));
return row;
}
static class ProductHolder{
TextView tx_id, tx_name, tx_price, tx_quantity;
}
}
save_info.JAVA
public class save_info extends AppCompatActivity {
EditText e_id, e_name, e_price, e_quantity;
String id, name, price, quantity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.save_info_layout);
e_id=(EditText)findViewById(R.id.d_id);
e_name=(EditText)findViewById(R.id.d_name);
e_price=(EditText)findViewById(R.id.d_price);
e_quantity=(EditText)findViewById(R.id.d_qty);
}
public void saveData(View view) {
id=e_id.getText().toString();
name=e_name.getText().toString();
price=e_price.getText().toString();
quantity=e_quantity.getText().toString();
BackgroundTask backgroundTask = new BackgroundTask(this);
backgroundTask.execute("add _info", id, name, price, quantity);
finish();
}
}
dBOperations.JAVA
public class DbOperations extends SQLiteOpenHelper {
private static final int DB_VERSION=1;
private static final String DB_NAME="product_info.db";
private static final String CREATE_QUERY = "create table "+ProductContract.ProductEntry.TABLE_NAME+
"("+ ProductContract.ProductEntry.ID+ " text,"+ ProductContract.ProductEntry.NAME+" text,"+
ProductContract.ProductEntry.PRICE+ " integer,"+ ProductContract.ProductEntry.QTY+ " integer);";
static final String DATABASE_CREATE="create table product_table " +
"(_id integer primary key autoincrement, " + "id text not null, name text not null, price integer not null, quantity integer not null);";
DbOperations(Context ctx){
super(ctx, DB_NAME, null, DB_VERSION);
Log.d("DATABASE OPERATIONS", "DATABASE CREATED...");
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(CREATE_QUERY);
Log.d("Database operations", "TABLE CREATED...");
}
public void addInformations(SQLiteDatabase sqLiteDatabase, String id, String name, int price, int qty){
ContentValues contentValues = new ContentValues();
contentValues.put(ProductContract.ProductEntry.ID, id);
contentValues.put(ProductContract.ProductEntry.NAME, name);
contentValues.put(ProductContract.ProductEntry.PRICE, price);
contentValues.put(ProductContract.ProductEntry.QTY, qty);
sqLiteDatabase.insert(ProductContract.ProductEntry.TABLE_NAME, null, contentValues);
Log.d("DATABASE OPERATIONS", "ONE ROW INSERTED");
}
public Cursor getInformations(SQLiteDatabase sqLiteDatabase){
String[] projections = {ProductContract.ProductEntry.ID, ProductContract.ProductEntry.NAME,
ProductContract.ProductEntry.PRICE, ProductContract.ProductEntry.QTY};
Cursor cursor = sqLiteDatabase.query(ProductContract.ProductEntry.TABLE_NAME, projections,
null, null, null, null,null );
return cursor;
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}