Android Studio:有没有办法更改 ArrayAdapter 上显示的文本?

Posted

技术标签:

【中文标题】Android Studio:有没有办法更改 ArrayAdapter 上显示的文本?【英文标题】:Android Studio: Is there a way to change the text shown on an ArrayAdapter? 【发布时间】:2021-12-12 09:14:39 【问题描述】:

每当 ArrayAdapter 从数据库中获得所需的一切时,它都会创建每个按钮,我认为,数据库的每个位的内存位置。我说我认为是因为每次我在应用程序中来回切换页面时结构都会发生变化。我使用按钮让它工作,但该方法阻止我做其他事情,例如编辑和从数据库中删除,因为按钮本身没有所需的所有信息,因为它是一个按钮。 当我尝试使用 ArrayAdapters 时,这就是它目前所做的:

这就是我试图让它说的:

这是用于尝试创建 ArrayAdapter 的代码:

    void Testing() 
    DataBaseHelper databaseHelper = new DataBaseHelper(View_Products.this);
    List<ProductModel> allProductsFromType = databaseHelper.GetAllProductsFromType(productType);
    ArrayAdapter productArrayAdapter = new ArrayAdapter<ProductModel>(View_Products.this, android.R.layout.simple_list_item_1, allProductsFromType);
    lv_products_added.setAdapter(productArrayAdapter);

    lv_products_added.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) 

            Toast.makeText(View_Products.this, "Testing " + allProductsFromType.get(i).GetName(), Toast.LENGTH_SHORT).show();
        
    );

这是数据库的代码:

public List<ProductModel> GetAllProductsFromType(String product_type) 
    List<ProductModel> products = new ArrayList<>();
    String queryString = "SELECT * FROM " + PRODUCT_TABLE + " WHERE " + COLUMN_PRODUCT_TYPE + " LIKE " + '\'' + product_type + '\'';
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(queryString, null);

    if (cursor.moveToNext()) 
        do 
            int productID = cursor.getInt(0);
            String productType = cursor.getString(1);
            String productName = cursor.getString(2);
            String productBrand = cursor.getString(3);

            ProductModel newProduct = new ProductModel(productID, productName, productBrand, productType);


            products.add(newProduct);
        
        while (cursor.moveToNext());
    
    cursor.close();
    db.close();
    return products;

关于我需要做什么才能获得理想结果的任何建议?提前致谢!

【问题讨论】:

参见developer.android.com/reference/android/widget/ArrayAdapter,您的问题是数组适配器通过对集合中的每个数据对象调用 Object#toString() 来创建视图。您可以覆盖 toString 方法或根据列表适配器视图指南的链接进行自定义。 【参考方案1】:
    public ArrayList<String> GetSingleProducts(String product_type) 
    List<ProductModel> products = new ArrayList<>();
    String queryString = "SELECT * FROM " + PRODUCT_TABLE + " WHERE " + COLUMN_PRODUCT_TYPE + " LIKE " + '\'' + product_type + '\'';
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(queryString, null);

    if (cursor.moveToNext()) 
        do 
            int productID = cursor.getInt(0);
            String productType = cursor.getString(1);
            String productName = cursor.getString(2);
            String productBrand = cursor.getString(3);
            products.add(productName );
        
        while (cursor.moveToNext());
    
    cursor.close();
    db.close();
    return products;



 

 void Testing() 

    DataBaseHelper databaseHelper = new DataBaseHelper(View_Products.this);
    ArrayList<String> allProductsFromType = databaseHelper.GetSingleProducts(productType);
    ArrayAdapter productArrayAdapter = new ArrayAdapter<String>(View_Products.this, android.R.layout.simple_list_item_1, allProductsFromType);
    lv_products_added.setAdapter(productArrayAdapter);

    lv_products_added.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) 

            Toast.makeText(View_Products.this, "Testing " + allProductsFromType.get(i), Toast.LENGTH_SHORT).show();
        
    );

【讨论】:

以上是关于Android Studio:有没有办法更改 ArrayAdapter 上显示的文本?的主要内容,如果未能解决你的问题,请参考以下文章

从 github 拉取最新代码到 Android Studio

有没有办法在Android Studio布局编辑器中看到应用于操作栏的自定义布局?

设置android studio启动时不检查sdk Android studio启动时总是在找AndroidSDK的解决办法

在Android Studio导入期间维护目录结构

为android studio的不同实例创建不同的主题

Android Studio 编辑器字体大小