2014-09-29 5 views
0

Я пытаюсь разработать приложение, состоящее из нескольких массивов и текстовых просмотров, и я столкнулся с проблемой.Заменить текст строки?

У меня есть 3 текстовых изображения и 2 массива.

Один из моих массивов содержит предложения. Мой первый вопрос: как я могу выделить конкретные слова в каждом предложении? Ex: «Это мой первый элемент массива» мне нужно выделить слово в строке, так что, когда он отображается в textview1, он будет выглядеть, как это ... «Это мой первый элемент массива»

В моем другом массиве содержатся слова. Они отображаются в textview2 и также должны быть выделены. Мой следующий вопрос: как я могу заменить текущее выделенное слово в textview1 на новое выделенное слово из textview2, а также иметь третий текст, отображающий новое предложение? Ex: Если выбранный элемент из моего массива предложений является «Это test» (отображается в textview1) И элемент из моего массива слов «сайт» (отображается в textview2), результат будет «Это сайт "(отображается в textview3)

Вот мой код до сих пор

import java.util.Random; 

import android.app.Activity; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.TextView; 
import android.widget.Button; 



public class Class1 extends Activity implements OnClickListener 
    { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_class1); 

     Button btn_sentence = (Button) findViewById(R.id.btn_sentence); 
     Button btn_word = (Button) findViewById(R.id.btn_word); 
     Button btn_newsentence = (Button) findViewById(R.id.btn_newsentence); 

     final Random ran = new Random(); 
     final Resources res = getResources(); 
     final TextView text1 = (TextView) findViewById(R.id.sentencetext); 
     final TextView text2 = (TextView) findViewById(R.id.wordtext); 
     final TextView text3 = (TextView) findViewById(R.id.newsentencetext); 

     btn_sentence.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       String[] NewText = null; 
       NewText = res.getStringArray(R.array.sentences); 
       String strRandom = NewText[ran.nextInt(NewText.length)]; 
       text1.setText(strRandom); 

      } 
      }); 
     btn_word.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       String[] NewText2 = null; 
       NewText2 = res.getStringArray(R.array.words); 
       String strRandom2 = NewText2[ran.nextInt(NewText2.length)]; 
       text2.setText(strRandom2); 

      } 
      }); 
     btn_newsentence.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       **text3.setText(" " + (text1.getText()) + " " + (text2.getText()) + " ");** 

      } 
      }); 

    } 


    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    }} 

полужирный текст так близко, как я получил, но все, что на самом деле делает это сочетать TexttView1 и textview2 , и отобразите его в textview3 ... что не совсем то, что я хочу.

Помощь была бы оценена ~ TylerNormal

+0

Домашнее задание ?? Что вы пробовали? пожалуйста, добавьте код – AsfK

+0

Не уверен, что мое новое редактирование помогает, но это мой код до сих пор – TylerNormal

+0

Смотрите мой фрагмент кода ниже. Он содержит то, что вам нужно, с правильной настройкой и немного мышления, конечно :) – Mjoellnir

ответ

1

Вы можете использовать простые HTML-теги, обернуть слова, которые вы хотите, чтобы выделить в тех, кто использует это:

TextView text = findViewByID(R.id.myTextView); 
String test = "This is my first array item"; 
// example - the word in brackets is to be replaced and captured 
// it is just an example to show how you can use it later with more 
// complex cases 
test = test.replaceAll("(first)", "<b>$1</b>"); 
text.setText(Html.fromHtml(test)); 
+0

Спасибо, человек, буквально мой третий день работы с кодированием ха-ха. Но если я сделаю то, что вы предложили, не нужно ли мне вводить этот фрагмент для каждого элемента? Я планирую иметь сотни предметов в обоих моих массивах. – TylerNormal

+0

Только если вы используете его буквально, что, конечно же, вам не следует. Вы должны настроить его, в соответствии с тем, что вам действительно нужно выделить. Составьте список слов, которые вам нужно выделить, поместите их в массив, переберите этот массив с вызовом replace для каждой введенной строки и замените эту строку из этого массива поиска. Строка-заменитель преобразуется во что-то вроде 'test = test.replaceAll (" + search [i] + ")", "$ 1"); 'и это, конечно, будет внутри цикла for. – Mjoellnir

+0

Если это действительно ваш третий день в программировании ... Я настоятельно советую получить книгу об основах программирования, а затем о объектно-ориентированном программировании, возможно, в java, а затем вам следует обратиться к разработке Android, вместо того, чтобы напрямую прыгать и слепо в разработке приложения ... – Mjoellnir

Смежные вопросы