如何在arraylist中调用strings.xml中的字符串

Jac*_*use 3 java xml string android arraylist

我正在使用a ArrayList并且所有字符串都在适配器中进行了硬编码,但现在我需要为我的应用程序提供多语言支持.我认为最好的方法是将我的所有硬编码字符串移动到我的strings.xml文件,然后生成我需要的所有不同语言的字符串文件.

我已经将硬编码的字符串移动到我的strings.xml但我现在不确定如何调用它们Arraylist而不是在那里使用硬编码字符串.

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {

List<AdapterData> mItems;

public Adapter() {
super();
mItems = new ArrayList<>();
AdapterData data = new AdapterData();
data.setQuestion("How Old Are You?");
data.setAnswer("I Am 21 Years Old");
mItems.add(data);

data = new AdapterData();
data.setQuestion("Where Were You Born?");
data.setAnswer("I Was Born In The USA");
mItems.add(data);

data = new AdapterData();
data.setQuestion("Are You Male or Female?");
data.setAnswer("I Am Male");
mItems.add(data);



}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
        .inflate(R.layout.recycler_view_card_item, viewGroup, false);
return new ViewHolder(v);
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
AdapterData data = mItems.get(i);
viewHolder.mName.setText(data.getQuestion());
viewHolder.mNameTwo.setText(data.getAnswer());
 }


@Override
public int getItemCount() {

return mItems.size();
}

class ViewHolder extends RecyclerView.ViewHolder{

public TextView mQuestion;
public TextView mAnswer;


public ViewHolder(View itemView) {
    super(itemView);
    mQuestion = (TextView)itemView.findViewById(R.id.layoutQuestion);
    mAnswer = (TextView)itemView.findViewById(R.id.layoutAnswer);

}
}

}
Run Code Online (Sandbox Code Playgroud)

Fad*_*ils 6

只是为了提供替代方案,您还可以使用字符串数组

<string name="how_old_are_you">How old are you?</string>
<string name="are_you_male_or_female">Are you male or female?</string>
...

<string name="i_am_21">I am 21 years old</string>
<string name="i_was_born_in_the_usa">I was born in the USA</string>
...

<string-array name="questions">
  <item>@string/how_old_are_you</item>
  <item>@string/are_you_male_or_female</item>
  ...
</string-array>

<string-array name="answers">
  <item>@string/i_am_21</item>
  <item>@string/i_was_born_in_the_usa</item>
  ...
</string-array>
Run Code Online (Sandbox Code Playgroud)

要使用字符串数组作为列表,

List<String> questions = Arrays.asList(getResources().getStringArray(R.array.questions));
Run Code Online (Sandbox Code Playgroud)

它可能会派上用场.


Phu*_*ran 5

如果你需要一个字符串数组,我认为 string-array 是最好的选择。创建一个名为 arrays.xml 的 .xml 文件并输入以下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>

     <string-array name="array_name">
        <item>String 1</item>
        <item>String 2</item>
        <item>String 3</item>
        <item>String 4</item>
        <item>String 5</item>
    </string-array>

</resources>
Run Code Online (Sandbox Code Playgroud)

然后获取字符串数组:

String[] myStrings = getResources().getStringArray(R.array.array_name); 
Run Code Online (Sandbox Code Playgroud)