- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从自定义 Recycler Adapter 类访问 strings.xml
中的字符串,但我收到了一条错误消息,如所述。这是我的 Kotlin Recycler Adapter 类,方法是 onBindViewHolder()
,我尝试访问带有占位符 miles
和 poundSign
的字符串:
import android.content.res.Resources
import android.provider.Settings.Global.getString
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import java.text.DecimalFormat
class SiteAdapter(
private val mainActivity: CountiesActivity,
private val siteList: List<Site>) : RecyclerView.Adapter<SiteAdapter.ListItemHolder>() {
inner class ListItemHolder(view: View):
RecyclerView.ViewHolder(view),
View.OnClickListener {
internal var name = view.findViewById<View>(R.id.textViewSiteName) as TextView
internal var distance = view.findViewById<View>(R.id.textViewSiteDistance) as TextView
internal var price = view.findViewById<View>(R.id.textViewSitePrice) as TextView
init {
view.isClickable = true
view.setOnClickListener(this)
}
override fun onClick(view: View) {
mainActivity.showDetails(adapterPosition)
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListItemHolder {
val itemView = LayoutInflater.from(parent.context)
.inflate(R.layout.recycler_list_item, parent, false)
return ListItemHolder(itemView)
}
override fun getItemCount(): Int {
if (siteList != null) {
return siteList.size
}
// error
return -1
}
override fun onBindViewHolder(holder: ListItemHolder, position: Int) {
val site = siteList[position]
holder.name.text = site.name
holder.distance.text = site.distance.toString() + Resources.getSystem().getString(R.string.miles)
val decimalFormatter = DecimalFormat("#,###.00")
holder.price.text = Resources.getSystem().getString(R.string.poundSign) + decimalFormatter.format(site.price).toString()
}
}
这是我的 strings.xml
文件:
<resources>
<string name="app_name">GoSiteUK</string>
<string name="title_england">England</string>
<string name="title_scotland">Scotland</string>
<string name="title_wales">Wales</string>
<string name="title_nireland">N.Ireland</string>
<string name="helpInstructions">\n\n\n\n\n\nSelect from the available countries at the bottom of the screen to display a list of
counties for that country. Then select a county for which you wish to see campsites, caravan sites or motorhome sites. Select
a particular site that you wish to travel to and you will be presented with more information about the site. Click on \"Take Me
Here\" and a map will be displayed with navigation instructions and route information to follow to take you to that selected
site.\n\nFor support contact:\n\nriverstonetechuk@gmail.com\n</string>
<string name="help">Help</string>
<string name="title_counties">--- Counties ---</string>
<string name="title_regions">--- Regions ---</string>
<string name="title_areas">--- Areas ---</string>
<string name="title_districts">--- Districts ---</string>
<string name="name">Name:</string>
<string name="distance">Distance:</string>
<string name="price">Price:</string>
<string name="miles"> miles</string>
<string name="poundSign">£</string>
</resources>
错误信息如下所示:
-01-28 16:09:25.229 16740-16740/com.riverstonetech.gositeuk W/ResourceType: No known package when getting value for resource number 0x7f0f0049
2020-01-28 16:09:25.230 16740-16740/com.riverstonetech.gositeuk D/AndroidRuntime: Shutting down VM
2020-01-28 16:09:25.231 16740-16740/com.riverstonetech.gositeuk E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.riverstonetech.gositeuk, PID: 16740
android.content.res.Resources$NotFoundException: String resource ID #0x7f0f0049
at android.content.res.Resources.getText(Resources.java:335)
at android.content.res.Resources.getString(Resources.java:381)
非常感谢解决此问题的任何解决方案。
最佳答案
我假设问题是由于访问
Resources.getSystem()
我强烈建议不要这样做。
我这边的建议:将 ListItemHolder 中的 View 设为这样的可访问字段
inner class ListItemHolder(val view: View)
然后您可以通过该 View 访问字符串资源:
holder.price.text = holder.view.context.getString(R.string.poundSign) + decimalFormatter.format(site.price).toString()
关于android - 如何在 Kotlin 中使用 `strings.xml` 从 Recycler Adapter 类访问 `getString()` 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59953156/
我注意到 Activity 类有两种不同的方法来获取字符串资源。这可以通过使用: getString(int resId):从应用程序包的默认字符串表中返回一个本地化字符串。 getResources
有什么值得注意的区别吗?我说的是一个花费大量时间读取查询结果的程序,并且某些运行(这些是网络点击)花费了 2 分钟以上的时间。如果我可以通过使用整数而不是字段名称来节省几秒钟,我想我可以免费获得一些时
要获取设备 ID,我通常使用以下代码段: String android_id = Settings.System.getString(getContentResolver(), Secure.ANDR
我在文件夹中有一些带有字符串的本地化文件,例如 values values-ru values-es etc. 在每个文件夹中都有一个 strings.xml 文件,其键相同但值不同。 在 Debug
我在 Assets 文件夹中使用不同的文本文件(arabic.txt,english.txt)我想更改设备语言的文件库 值/字符串文件中可以设置文件名吗? public static class Ti
我有一个扩展应用程序的类。我需要从 strings.xml 文件中获取一个字符串。 我正在使用此类来管理全局状态,因此它是通过 list 加载的。 加载时,getString() 生成一个空指针引用。
所以我在strings.xml中有很多字符串,它们的记录格式是: xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx ...... 现在我想一个一个地加载它们,而不必输入所有的字符
我有一个类,我应该在其中将一些字符串(取自 strings.xml)插入到 StringBuffer 中。这将传递给一个 Activity 。问题是我应该使用 getString() 方法,但我不能,
有没有办法以编程方式更改 R.string?因为它会抛出错误。 基本上我想这样做:String parkAdd = getString(R.string.stg_ParkAddress_+id); 因
我遇到了一个只出现在这个语法中的崩溃,在这个语句之后它崩溃了 ats+=getString(R.string.gal_grietineles , grietinele)+"\n";当我使用 ats+=
这是我的 onActivityResult 方法的代码: @Override public void onActivityResult(int requestCode, int resultCode,
我是android新手,我正在编写一个应用程序来根据纬度和经度获取地址。在 FetchAddressIntentService 类中,我在 getString() 函数中收到一个错误,指出将字符串添加
我遇到的问题是 getString() 返回的不是 id 的字符串,而是另一个字符串。但首先这是我的代码: public public class ShopFragment extends Fragm
在我的应用程序的应用程序类的 onCreate 中,我有这段代码 Locale current = getResources().getConfiguration().locale;
我想知道 getString()。我可以看到执行 getString(R.string.some_text) 是有效的。 getResources().getString(R.string.conne
基于 Android 文档: https://developer.android.com/training/basics/supporting-devices/languages https://de
我使用的是 Delphi 2009。 这对我来说适用于所有情况,除了一种情况: var BOMLength: integer; Buffer: TBytes; Encoding: TEnc
Dictionary Fields = new Dictionary();for (int i = 0; i < reader.FieldCount; i++){ Fields.Add(rea
我有一个名为 spiliaBeach 的 Place Object 实例,它接受您在下面看到的参数: public PlaceObject spiliaBeach = new PlaceObject(
我有: Toast.makeText(NewChatActivity.this, getString(R.string.invitation_sent_prompt, contact), Toast.
我是一名优秀的程序员,十分优秀!