0

私はこれを自分で達成しようと数日を費やし、達成する必要があるものに近い多くのStackoverflowの回答を試しましたが、役に立ちませんでした。

私はSQLiteデータベースを持っています。各行にはフレーズとそのフレーズの翻訳が外国語で保持されています。これまでに行ったリストに保存されたフレーズを表示する必要がありますが、2つの方法を理解するのに苦労していますリスト項目をクリックしたときのこと。2 つのことは、クリックされたリスト項目 (フレーズ) の外国語翻訳をトーストで表示することと、外国語の文字列をテキストから音声に読み上げさせることです。

コードを含む私のクラスは次のとおりです。

public class ShowPhrases extends Activity implements OnInitListener{

private SQLiteDatabase database;
private CursorAdapter dataSource;
private Cursor mNotesCursor;
private NotesDbAdapter mDbHelper;
private TextToSpeech tts;
private static final String fields[] = { "phrase", BaseColumns._ID };//The phrase will be shown in the list
String Transalation = "folang";//folang holds the translation

@Override
public void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.hs); 


    NotesDbAdapter.DatabaseHelper helper = new NotesDbAdapter.DatabaseHelper(this);
    database = helper.getWritableDatabase();
    Cursor data = database.query("notes", fields, null, null, null, null, null);

    dataSource = new SimpleCursorAdapter(this, R.layout.highscores, data, fields, new int[]    { R.id.first });

    final ListView lv = (ListView) findViewById(R.id.list_view); 
    lv.setHeaderDividersEnabled(true);
    lv.addHeaderView(getLayoutInflater().inflate(R.layout.highscores, null));

    lv.setAdapter(dataSource);
    lv.setClickable(true);


    tts = new TextToSpeech(this, this);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

          @Override
          public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {

         //LIST ITEM SHOWS ENGLISH WORD BUT WHEN CLICKING I NEED TO SHOW FOREIGN WORD AS WELL AS HAVE THE PHONE SPEAK IT

//                speakOut(((TextView) findViewById(R.id.tvTranslatedText))
//                          .getText().toString());       

          }
        }); 
}



@Override
public void onInit(int status) {
    // TODO Auto-generated method stub
    if (status == TextToSpeech.SUCCESS) {

        int result = tts.setLanguage(Locale.ITALIAN);

        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "This Language is not supported");
        } else {

        }

    } else {
        Log.e("TTS", "Initilization Failed!");
    }
}

private void speakOut(String text) {
    tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}

}

私が達成しようとしていることをどのように行うことができるかについて、誰かが洞察を提供できますか?

4

1 に答える 1

1

focusableのモードTextViewを変更する必要がありますfalse

XML で TextView を更新する

android:focusable="false"

 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

      @Override
      public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {

          data.moveToPosition(position);
          Toast.makeText(getApplicationContext(), c.getString(c.getColumnIndex("notes")), Toast.LENGTH_LONG).show();
          speakOut(c.getString(c.getColumnIndex(BaseColumns._ID)));

      }
    }); 
于 2013-08-07T12:39:04.310 に答える