私は現在「net.superlinux.tcltktutorials」を書いています。今すぐ Play ストアで見つけることができます。アプリケーションでは、ロケールを使用する方法の代わりに、ロケールを使用する標準的な方法を使用したいと考えています。アラビア語の /res/vlaues-ar を追加する必要があり、英語の /res/values のデフォルトがあります。このアプリは、広告ベースの YouTube プレイリスト TCL/Tk プログラミング言語チュートリアルに関するものです。プレイリストはアラビア語と英語で表示できるようになりました。私が気付いたのは、同じプレイリストのデフォルトの /res/values 36 エントリと /res/values-ar 35 エントリがある場合、ResourceNotFound 例外が発生することです。あなたがしなければならないことは、たとえ英語のプレイリストの数が少なくても、英語とアラビア語の数が同じになるように、不足しているエントリをリストの一番下に空として追加することだけです.
これは、リスト アクティビティ内で形成されたプレイリストに追加する私の方法であり、リソースを xml 組み込みデータとして使用する賢い方法でもありました。
package net.superlinux.tcltktutorials;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListOfVideos extends ListActivity {
List<String> model = new ArrayList<String>();
ArrayAdapter<String> adapter = null;
List<String> filename = new ArrayList<String>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
adapter = new ArrayAdapter<String> (this, R.layout.list_item, model);
load_playlist();
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String selected_youtube_video=filename.get(position);
try {Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+selected_youtube_video));
startActivity(i);
}
catch(Exception e){
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v="+selected_youtube_video+"&loop=1&autoplay=1")));
e.printStackTrace();
}
}
void load_playlist()
{
int display_id=0;
int file_id=0;
//loop forever until nothing has to be added to the ListView or stop if the list item
// to be added does not exist.
for (int i=0;;i++){
display_id=getResources().getIdentifier("display_"+i, "string", getPackageName());
if (display_id!=0 && getString(display_id).length()!=0)
adapter.add(getString(display_id));
else {
Log.e("string id not found or empty","R.string.display_"+i );
return;
}
file_id=getResources().getIdentifier("file_"+i, "string", getPackageName());
if (file_id!=0 && getString(file_id).length()!=0){
filename.add(getString(file_id));
}
else {
Log.e("string id not found or empty","R.string.file_"+i );
return;
}
}
}
}