Android - ListView 中的字符串编码失败
Android - String encoding failed in ListView
我在 Windows 上使用 Android Studio 最新版本。
我使用 with DialogFragment
创建了对话框。
此对话框有一个 ListView
.
我的代码如下:
public class DestDialogFragment extends DialogFragment
{
View rootView;
ListView mListView;
ArrayAdapter<String> mAdapter;
String[] listitems;
public DestDialogFragment() {
listitems = new String[] { "a", "b", "c", "d" }; // Actually, this array has my real country language strings.
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.dialogfragment_destination, container, false);
mListView = (ListView) rootView.findViewById(R.id.dest_listview);
// dialog without title
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAdapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1, listitems);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(onClickListItem);
}
private AdapterView.OnItemClickListener onClickListItem = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), mAdapter.getItem(position),Toast.LENGTH_SHORT).show();
}
};
}
实际上,listitem[]
并不像"a", "b", "c", "d"
。
它有 my real country language strings
.
无论如何,我调试了我的项目。
调试器说 listitem[]
的值类似于 "????", "??????", "???????", "????"
这就是为什么我无法在设备上看到正确的结果。
所以我用谷歌搜索了一下。我试图在菜单 Settings
中更改 File Encoding
并尝试编辑文件 build.gradle
。但是,这些方法对我不起作用...
我不知道为什么...你能帮帮我吗?
根本不要将文本标签放入 java class!为此使用 resource-xml 文件。 read this 明白了。
在您的代码中,您可以输入
<string-array name="colors_array">
<item>White</item>
<item>Black</item>
<item>Pink</item>
<item>Red</item>
<item>Violet</item>
</string-array>
到 res/values-[your lang]/strings.xml
并在您的 java 代码中使用它:
String[] array = getContext().getResources().getStringArray( R.array.colors_array );
mAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, array );
我在 Windows 上使用 Android Studio 最新版本。
我使用 with DialogFragment
创建了对话框。
此对话框有一个 ListView
.
我的代码如下:
public class DestDialogFragment extends DialogFragment
{
View rootView;
ListView mListView;
ArrayAdapter<String> mAdapter;
String[] listitems;
public DestDialogFragment() {
listitems = new String[] { "a", "b", "c", "d" }; // Actually, this array has my real country language strings.
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.dialogfragment_destination, container, false);
mListView = (ListView) rootView.findViewById(R.id.dest_listview);
// dialog without title
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAdapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1, listitems);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(onClickListItem);
}
private AdapterView.OnItemClickListener onClickListItem = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), mAdapter.getItem(position),Toast.LENGTH_SHORT).show();
}
};
}
实际上,listitem[]
并不像"a", "b", "c", "d"
。
它有 my real country language strings
.
无论如何,我调试了我的项目。
调试器说 listitem[]
的值类似于 "????", "??????", "???????", "????"
这就是为什么我无法在设备上看到正确的结果。
所以我用谷歌搜索了一下。我试图在菜单 Settings
中更改 File Encoding
并尝试编辑文件 build.gradle
。但是,这些方法对我不起作用...
我不知道为什么...你能帮帮我吗?
根本不要将文本标签放入 java class!为此使用 resource-xml 文件。 read this 明白了。
在您的代码中,您可以输入
<string-array name="colors_array">
<item>White</item>
<item>Black</item>
<item>Pink</item>
<item>Red</item>
<item>Violet</item>
</string-array>
到 res/values-[your lang]/strings.xml
并在您的 java 代码中使用它:
String[] array = getContext().getResources().getStringArray( R.array.colors_array );
mAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, array );