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