我可以将方法中的变量传递给适配器中的文本视图吗?

Posted

技术标签:

【中文标题】我可以将方法中的变量传递给适配器中的文本视图吗?【英文标题】:Can I pass a variable in a method to a textview in an adapter? 【发布时间】:2021-07-21 21:24:45 【问题描述】:

我想通过

int count = cursor.getCount();

来自

public List<Products> getAllProducts() 
        String[] columns = 
                COLUMN_ID,
                COLUMN_BARCODE,
                COLUMN_NAME,
                COLUMN_OPRICE,
                COLUMN_SPRICE,
                COLUMN_XPDATE
        ;

        String sortOrder =
                COLUMN_ID + " DESC";
        List<Products> productList = new ArrayList<Products>();
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_PRODUCT,
                columns,
                null,
                null,
                COLUMN_NAME,
                null,
                sortOrder);
        if (cursor.moveToFirst()) 
            do 
                Products product = new Products();
                product.setId(Integer.parseInt(cursor.getString(cursor.getColumnIndex(COLUMN_ID))));
                product.setBarcode(cursor.getString(cursor.getColumnIndex(COLUMN_BARCODE)));
                product.setName(cursor.getString(cursor.getColumnIndex(COLUMN_NAME)));
                product.setOprice(cursor.getString(cursor.getColumnIndex(COLUMN_OPRICE)));
                product.setSprice(cursor.getString(cursor.getColumnIndex(COLUMN_SPRICE)));
                product.setDate(cursor.getString(cursor.getColumnIndex(COLUMN_XPDATE)));
                productList.add(product);
             while (cursor.moveToNext());
        
        **int count = cursor.getCount();**
        cursor.close();
        db.close();
        return productList;
    

到适配器中的文本视图

holder.total.setText("counts");

适配器

public class ProductsAdapter extends RecyclerView.Adapter<ProductsAdapter.ProductViewHolder>
    private List<Products> listProducts;
    DatabaseHelper databaseHelper;
    public ProductsAdapter(List<Products> listProducts) 
        this.listProducts= listProducts;
    
    @NonNull
    @Override
    public ProductViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) 
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.products_list, parent, false);
        return new ProductViewHolder(itemView);
    

    @Override
    public void onBindViewHolder(@NonNull ProductViewHolder holder, int position) 
        holder.name.setText(listProducts.get(position).getName());
        holder.total.setText("counts");
    

    @Override
    public int getItemCount() 
        return listProducts.size();
    

    public class ProductViewHolder extends RecyclerView.ViewHolder 
        private TextView name, total;
        public ProductViewHolder(@NonNull View itemView) 
            super(itemView);
            name = itemView.findViewById(R.id.productName);
            total = itemView.findViewById(R.id.available);
        
    

【问题讨论】:

total 是否与适配器中的特定行相关? 你想RecyclerView的所有item中的编号都一样吗? 它的行数,其中产品名称 = 名称没有 @forpas 它只显示特定产品的行数 int count = cursor.getCount(); 返回表的所有行数。表格的每一行都是一个产品。 是的@forpas 我现在只想将变量传递给适配器 【参考方案1】:

我建议您将要使用的变量设为全局变量(例如,在方法之外定义它)然后在方法内实例化它,然后调用具有您要传递的变量的类

例如

Myclass class = new Myclass()
Int count = class.count

然后将 Int 转换为字符串,因为 textviews 只接受字符串 例如String countSt = String.ValueOf(count) 谢谢

【讨论】:

【参考方案2】:

用这一行:

int count = cursor.getCount();

游标中包含的行数分配给变量count。 这些行都添加到列表productList。 因此,实际上您不需要变量 count,因为您只需获取列表的大小即可获得相同的数字。

这个列表在你的适配器类中作为listProducts 传递,所以获取它的大小并在TextView 中显示它:

holder.total.setText(String.valueOf(listProducts.size()));

【讨论】:

感谢@forpas,我的声望太低,无法投票 是否可以在适配器中按名称而不是databasehelper类进行排序? @znovativ 您必须在 Products 类中创建一个自定义比较器,然后在适配器类中使用 Collections.sort() 。你可以在这里找到一个例子:***.com/questions/11449256/….

以上是关于我可以将方法中的变量传递给适配器中的文本视图吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以将子动作的返回值传递给 ASP.net 中的视图吗

我可以将刀片变量传递给 Laravel 中的 php 变量吗?

有没有办法将变量传递给 Django 中的通用视图?

如何将 settings.py 中的变量传递给视图?

以编程方式将文本字段值传递给另一个视图中的标签

我可以将赋值结果传递给 c++ 中的函数吗?