gpt4 book ai didi

java - Sharedpreference 似乎不起作用,无法显示存储的数据

转载 作者:行者123 更新时间:2023-11-29 19:35:42 24 4
gpt4 key购买 nike

这是我的代码

在首选项中设置值:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

final ViewHolder holder;

if(convertView == null){
holder = new ViewHolder();
convertView=inflater.inflate(resource, null);
holder.tvItemName = (TextView) convertView.findViewById(R.id.tvItemName);
holder.tvPrice = (TextView) convertView.findViewById(R.id.tvPrice);
holder.bLess = (Button) convertView.findViewById(R.id.bLess);
holder.bAdd = (Button) convertView.findViewById(R.id.bAdd);
holder.etItemQuantity = (EditText) convertView.findViewById(R.id.etItemQuantity);
holder.bAddToCart = (Button) convertView.findViewById(R.id.bAddToCart);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}

holder.tvItemName.setText(itemModelList.get(position).getItemName());
holder.tvPrice.setText("Rs " + itemModelList.get(position).getSalesRate());

holder.bAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int qty = Integer.parseInt(holder.etItemQuantity.getText().toString().trim());
qty++;
holder.etItemQuantity.setText(""+qty);
}
});

holder.bLess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int qty = Integer.parseInt(holder.etItemQuantity.getText().toString().trim());
if(qty != 0){
qty--;
holder.etItemQuantity.setText(""+qty);
}
}
});
final String itemName = itemModelList.get(position).getItemName();
final String salesRate = itemModelList.get(position).getSalesRate();


holder.bAddToCart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putString("itemName", itemName );
edit.putString("salesRate", salesRate );
edit.commit();
Toast.makeText(Items.this,"Added item to cart", Toast.LENGTH_LONG).show();
}
});
return convertView;
}

从偏好中检索数据:

public class CartDisplay extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.row_cart_display);

TextView tvItemName = (TextView) findViewById(R.id.tvItemName);
TextView tvSalesRate = (TextView) findViewById(R.id.tvSalesRate);
TextView tvTotalAmount = (TextView) findViewById(R.id.tvTotalAmount);


SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
String itemName = prefs.getString("itemName", "No itemName defined");//"No name defined" is the default value.
String salesRate = prefs.getString("salesRate", "0");//"0" is the default value.
tvItemName.setText(itemName);
tvSalesRate.setText("RS "+salesRate);
tvTotalAmount.setText("Total: RS" +salesRate);
}

}

Here is how the view looks

我知道为什么我的代码不工作

  • 我正在尝试将 itemname 和 salesrate 发送到下一个 Activity ,但它如果我使用 bundle 或 intents,不会在这里显示它有效
  • 我还想将 etItemQuantity 值存储在 sharedprefrences btw idk如何使 qty 变量成为全局变量,以便我可以将值存储在添加到购物车按钮点击

真的需要帮助,here is my full code

最佳答案

编辑2

创建 Application 类在其中存储 qty 变量并在应用程序中的任何位置访问。

参见example用于创建应用程序类


编辑 1

正如您提到的示例 if (restoredText != null) { 可用于检查 SharedPreference 是否具有值。用户试图避免为每个值检查 null。于是他给“text”定了一个值

您没有设置文本值只是粘贴下面的代码删除 if 语句。

 String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
int idName = prefs.getInt("idName", 0);

我觉得

 String restoredText = prefs.getString("text", null);

返回 null 所以 if 语句没有执行

if (restoredText != null) { ...}

关于java - Sharedpreference 似乎不起作用,无法显示存储的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39226050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com