Android 单击项目时显示的值

Android 单击项目时显示的值,android,database,sqlite,android-sqlite,Android,Database,Sqlite,Android Sqlite,我有一个数据库,其表有4列: 名字 数量 卡路里 测量 插入列name中的值显示在微调器中 我的问题:单击一个项目时,是否可以显示与名称对应的数量值?如果是,那么我如何获得一些指导,请?这是一个数据库类,用于将数据存储到数据库中,并在此类上执行所有操作,如删除、插入、更新 数据库类 public class DetailDatabase extends SQLiteOpenHelper { private static final String DATABASE_NAME = "Det

我有一个数据库,其表有4列:

  • 名字
  • 数量
  • 卡路里
  • 测量
插入列
name
中的值显示在微调器中


我的问题:单击一个项目时,是否可以显示与
名称
对应的数量值?如果是,那么我如何获得一些指导,请?

这是一个数据库类,用于将数据存储到数据库中,并在此类上执行所有操作,如删除、插入、更新

数据库类

public class DetailDatabase extends SQLiteOpenHelper {

  private static final String DATABASE_NAME = "Detail.db";
  public static final String TABLE_NAME = "Details";

  public static final String COLUMN_NAME = "NAME";
  public static final String COLUMN_QUANTITY = "QUANTITY";
  public static final String COLUMN_CALORIES = "CALORIES";
  public static final String COLUMN_MEASUREMENTS = "MEASUREMENTS";

  public SeriesDetailDatabase(Context context) {
    super(context, DATABASE_NAME, null, 1);
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL(
            "create table  " + TABLE_NAME +
                    "( " +
                    COLUMN_NAME + "  varchar ," +
                    COLUMN_QUANTITY + " varchar," +
                    COLUMN_CALORIES + " varchar," +
                    COLUMN_MEASUREMENTS + " varchar)"
    );
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
  } 

  public boolean insertOrUpdateDetails(String name, String quantity, String calories, String measurements) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COLUMN_NAME, name);
    contentValues.put(COLUMN_QUANTITY, quantity);
    contentValues.put(COLUMN_CALORIES, calories);
    contentValues.put(COLUMN_MEASUREMENTS, measurements);

    int rows = db.update(TABLE_NAME, contentValues, COLUMN_NAME + " = " + name, null);
    if (rows == 0) {
        db.insert(TABLE_NAME, null, contentValues);
    }
    return true;
  }

  public Cursor getData(int id) {
    SQLiteDatabase db = this.getReadableDatabase();
    return db.rawQuery(" select * from " + TABLE_NAME + " where id= " + id + "", null);
  }

  public int numberOfRows() {
    SQLiteDatabase db = this.getReadableDatabase();
    return (int) DatabaseUtils.queryNumEntries(db, TABLE_NAME);
  }

  public boolean updateData(String name, String quantity) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COLUMN_QUANTITY, quantity);
    db.update(TABLE_NAME, contentValues, COLUMN_NAME + " = ? ", new String[]{name});
    return true;
  }

  public Integer deleteData(Integer id) {
    SQLiteDatabase db = this.getWritableDatabase();
    return db.delete(TABLE_NAME, COLUMN_NAME + " = ? ", new String[]{Integer.toString(id)});
  }

  public void deleteRow(String value) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + COLUMN_BOOK_ID + "='" + value + "'");
    db.close();
  }

  public List<Model> getAllData() {
    List<Model> list = new LinkedList<>();

    // 1. build the query
    String query = "SELECT  * FROM " + TABLE_NAME + " ORDER BY " + COLUMN_NAME;

    // 2. get reference to writable DB
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(query, null);

    // 3. go over each row, build book and add it to list
    Model model = null;
    if (cursor.moveToFirst()) {
        do {
            model = new Model();
            model.setName(cursor.getString(0));
            model.setQuantity(cursor.getString(1));
            model.setCalories(cursor.getString(2));
            model.setMeasurements(cursor.getString(3)) 

            // Add data to list
            list.add(model);
        } while (cursor.moveToNext());
    }

    db.close();
    return list;
  }

  public void deleteAll() {
    SQLiteDatabase db = this.getReadableDatabase();
    db.execSQL("DELETE FROM " + TABLE_NAME);
    db.close();
  }
}
微调器有一个适配器类

适配器类

    public class CustomAdapter extends ArrayAdapter<String> {

        private ArrayList data;
        private LayoutInflater inflater;

        public CustomAdapter(Context homeActivity, int spinner_rows, ArrayList customListViewValuesArr) {
            super(activity, spinner_rows, customListViewValuesArr);
            data = customListViewValuesArr;
            inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
            return getCustomView(position, parent);
        }

        @NonNull
        @Override
        public View getView(int position, View convertView, @NonNull ViewGroup parent) {
            return getCustomView(position, parent);
        }

        private View getCustomView(int position, ViewGroup parent) {

            View row = inflater.inflate(R.layout.list_item, parent, false);

            Model model;
            model = (Model) data.get(position);

            TextView mNameView = row.findViewById(R.id.tvName);

            mNameView.setText(model.getName());

            return row;
        }
    }
公共类CustomAdapter扩展了ArrayAdapter{
私有数组列表数据;
私人充气机;
公共CustomAdapter(上下文homeActivity、int微调器_行、ArrayList CustomListViewValuesAR){
超级(活动、微调器行、customListViewValuesArr);
数据=CustomListViewValuesAR;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
}
@凌驾
公共视图getDropDownView(int位置,视图转换视图,@NonNull视图组父级){
返回getCustomView(位置,父级);
}
@非空
@凌驾
公共视图getView(int位置,视图转换视图,@NonNull视图组父级){
返回getCustomView(位置,父级);
}
私有视图getCustomView(int位置,视图组父级){
视图行=充气机。充气(R.layout.list\u项,父项,false);
模型;
model=(model)data.get(position);
TextView mNameView=row.findviewbyd(R.id.tvName);
mNameView.setText(model.getName());
返回行;
}
}
这是一个主活动类,您可以在其中设置微调器上的适配器

主要活动

    package com.vrvirtual.lionservicescitizenapp;

    import android.annotation.SuppressLint;
    import android.app.Notification;
    import android.app.NotificationManager;
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private ArrayList<Model> list;

        private Model model;

        private Spinner mSpinnerView;

        private String Name = "";
        private String Quantity = "";
        private String Calories = "";
        private String Measurements = "";
        private DetailDatabase database;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main); 
            database=new DetailDatabase(this);  
            database.insertOrUpdateDetails("ABC","1","1000","aaa");
            database.insertOrUpdateDetails("xyz","2","3000","bbb");
            try {
                mSpinnerView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                    @Override
                    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                        model=list.get(position);
                        Name = model.getName();
                        CitQuantityyName = model.getQuantity();
                        Calories = model.getCalories();
                        Measurements = model.getMeasurements();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> adapter) {
                    }
                });
        }

        private void setCityAdapter() {
            try {
                list=database.getAllData();
                ArrayAdapter adapter = new CostomAdapter(this, R.layout.list_item, list);

                mSpinnerView.setAdapter(adapter);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onBackPressed() {
            super.onBackPressed();
        }

        @Override
        protected void onDestroy() {
            super.onDestroy();
            Log.i(TAG, "On Destroy .....");
        }

        @Override
        protected void onPause() {
            super.onPause();
            Log.i(TAG, "On Pause .....");
        }

        @Override
        protected void onRestart() {
            super.onRestart();
            Log.i(TAG, "On Restart .....");
        }

        @Override
        protected void onResume() {
            super.onResume();
            Log.i(TAG, "On Resume .....");
        }

        @Override
        protected void onStart() {
            super.onStart();
            Log.i(TAG, "On Start .....");
        }

        @Override
        protected void onStop() {
            super.onStop();
            Log.i(TAG, "On Stop .....");
        }
    }
package com.vrvirtual.lionservicescitizenapp;
导入android.annotation.SuppressLint;
导入android.app.Notification;
导入android.app.NotificationManager;
公共类MainActivity扩展AppCompatActivity实现View.OnClickListener{
私有数组列表;
私有模型;
私人微调器mSpinnerView;
私有字符串名称=”;
私有字符串数量=”;
私人字符串=”;
私有字符串度量=”;
私有数据库;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
数据库=新的详细信息数据库(此);
数据库。insertOrUpdateDetails(“ABC”、“1”、“1000”、“aaa”);
数据库。insertOrUpdateDetails(“xyz”、“2”、“3000”、“bbb”);
试一试{
mSpinnerView.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共位置(AdapterView AdapterView、视图视图、整型位置、长id){
model=list.get(位置);
Name=model.getName();
CitQuantityName=model.getQuantity();
卡路里=model.getcarries();
Measurements=model.getMeasurements();
}
@凌驾
未选择公共无效(AdapterView适配器){
}
});
}
私有void setCityAdapter(){
试一试{
list=database.getAllData();
ArrayAdapter=新的CostoAdapter(此,R.layout.list_项,list);
mSpinnerView.setAdapter(适配器);
}捕获(例外e){
e、 printStackTrace();
}
}
@凌驾
public void onBackPressed(){
super.onBackPressed();
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
Log.i(标记“On Destroy…”);
}
@凌驾
受保护的void onPause(){
super.onPause();
Log.i(标记“暂停时…”);
}
@凌驾
受保护的void onRestart(){
super.onRestart();
Log.i(标记“重新启动时…”);
}
@凌驾
受保护的void onResume(){
super.onResume();
Log.i(标记“在简历上…”);
}
@凌驾
受保护的void onStart(){
super.onStart();
Log.i(标记“启动时…”);
}
@凌驾
受保护的void onStop(){
super.onStop();
Log.i(标记“On Stop…”);
}
}
activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <Spinner
            android:id="@id/fault_category"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </RelativeLayout>

list_item.xml

    <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/tvName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </RelativeLayout>


您可以在arraylist中添加所有数据并使用模型类型。@ShivamKumar您能给我一个教程或一些代码作为模型指南吗?是的,我会给代码的,请稍候。@ShivamKumar非常感谢您!!您是最好的!如果您解决了问题,请接受答案
    <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/tvName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </RelativeLayout>