一次通过随机方法使用文本

时间:2015-12-08 11:24:15

标签: android random textview

我是Android新手。我在按钮上的TextView中显示Text随机点击。在第一次Textview标题和第二次该标题的解释。我可以随机显示标题和解释,现在我想如果文本显示一次不再显示意味着它将被删除。这是我卡住的地方。我无法删除文本。任何帮助将不胜感激。我在这里发布我的代码。

MainActivity.java

TextView text_heading,text_explain;
Button click;
Random random;
Integer [] array_heading ,array_explain ;
Integer int_text;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    text_heading = (TextView) findViewById(R.id.text_heading);
    text_explain = (TextView) findViewById(R.id.text_explain);
    click = (Button) findViewById(R.id.click);

    click.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            text_heading.setText(array_heading.get(int_text)); //getting error
            text_explain(array_explain.get(int_text)); //getting error
            array_heading.remove(int_text); //getting error
            array_explain.remove(int_text); //getting error
        }
    });

    random = new Random();

    array_heading  = new Integer []{R.string.source_text1, R.string.source_text2, R.string.source_text3,
            R.string.source_text6, R.string.source_text5, R.string.source_text4, R.string.source_text7,
            R.string.source_text8, R.string.source_text9};

    array_explain = new Integer []{R.string.source_text1_explain, R.string.source_text2_explain,
            R.string.source_text3_explain,
            R.string.source_text4_explain, R.string.source_text5_explain, R.string.source_text6_explain,
            R.string.source_text7_explain,
            R.string.source_text8_explain, R.string.source_text9_explain};

    ArrayList<Integer> array_headingList = new ArrayList<Integer>(Arrays.asList(array_heading));

    ArrayList<Integer>array_explainList = new ArrayList<Integer>(Arrays.asList(array_explain));


    int_text = random.nextInt(array_headingList.size() - 1);
}
   }

4 个答案:

答案 0 :(得分:0)

  

我无法删除文本。任何帮助将不胜感激。我是   在这里发布我的代码。

要清除TextView您可以将null传递给setText的内容。 E.g

text_heading.setText(null);

如果您想在每次点击按钮时更改内容,则必须移动

int_text = random.nextInt(array_heading.length);

你的onClick回调,

你应该知道next int在[0, n)之间返回一个int。仅当您要从要显示的可能文本中排除array_heading.length -1时,才需要R.string.source_text9_explain。另请注意,如果array_heading包含的项目多于array_explain,则可以获得ArrayIndexOutBoundException

答案 1 :(得分:0)

您必须使用ArrayList。

ArrayList<Integer> heading = Arrays.asList(array_heading);
ArrayList<Integer> explain = Arrays.asList(array_explain);

现在从这个arraylists中设置文本。当它的设置一旦从arraylist中移除它就不能再显示它了。

像这样使用

random = new Random();

array_heading  = new Integer []{R.string.source_text1, R.string.source_text2, R.string.source_text3,
        R.string.source_text6, R.string.source_text5, R.string.source_text4, R.string.source_text7,
        R.string.source_text8, R.string.source_text9};

array_explain = new Integer []{R.string.source_text1_explain, R.string.source_text2_explain,
        R.string.source_text3_explain,
        R.string.source_text4_explain, R.string.source_text5_explain, R.string.source_text6_explain,
        R.string.source_text7_explain,
        R.string.source_text8_explain, R.string.source_text9_explain};

ArrayList<Integer> array_headingList = new ArrayList<Integer>(Arrays.asList(array_heading));

ArrayList<Integer> array_explainList = new ArrayList<Integer>(Arrays.asList(array_explain));

int_text = random.nextInt(array_headingList.size());

click.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        text_heading.setText(array_headingList.get(int_text)); 
        text_explain.setText(array_explainList.get(int_text)); 
        array_headingList.remove(int_text); 
        array_explainList.remove(int_text);
        if(array_headingList.size() == 0){
          click.setEnabled(false);
          Toast.makeText(getApplicationContext(),"All text finished",Toast.LENGTH_SHORT).show();
        } else if(array_headingList.size() == 1){
        int_text = 0;
        } else {
         int_text = random.nextInt(array_headingList.size());
        }
    }
});

答案 2 :(得分:0)

TextView text_heading,text_explain;
Button click;
Random random;
Integer [] array_heading ,array_explain ;
Integer int_text;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    text_heading = (TextView) findViewById(R.id.text_heading);
    text_explain = (TextView) findViewById(R.id.text_explain);
    click = (Button) findViewById(R.id.click);

    random = new Random();

    array_heading  = new Integer []{R.string.source_text1, R.string.source_text2, R.string.source_text3,
            R.string.source_text6, R.string.source_text5, R.string.source_text4, R.string.source_text7,
            R.string.source_text8, R.string.source_text9};

    array_explain = new Integer []{R.string.source_text1_explain, R.string.source_text2_explain,
            R.string.source_text3_explain,
            R.string.source_text4_explain, R.string.source_text5_explain, R.string.source_text6_explain,
            R.string.source_text7_explain,
            R.string.source_text8_explain, R.string.source_text9_explain};

    ArrayList<Integer> array_headingList = new ArrayList<Integer>(Arrays.asList(array_heading));

    ArrayList<Integer> array_explainList = new ArrayList<Integer>(Arrays.asList(array_explain));


    int_text = random.nextInt(array_headingList.size() - 1);

    click.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            text_heading.setText(array_headingList.get(int_text)); //getting error
            text_explain.setText(array_explainList.get(int_text)); //getting error
            array_headingList.remove(int_text); //getting error
            array_explainList.remove(int_text); //getting error
        }
    });

}
   }

答案 3 :(得分:0)

我会将字符串保存在一个对象中:

public class Item {
    private final int textId;
    private final int textExplanationId;

    public class Item(int textId, int textExplanationId){
        this.textId = textId;
        this.textExplanationId = textExplanationId;
    }

    public int getTextId(){return textId;}
    public int getTextExplanationId(){return textExplanationId;}
}

然后我会将它们存储在ArrayList

List<Item> items = new ArrayList<Item>(new Item[]{
     new Item(R.string.source_text1, R.string.source_text1_explain),
     new Item(R.string.source_text2, R.string.source_text2_explain),
      //etc
     });

然后我会将那个阵列洗牌一次

Collections.shuffle(items);

按顺序阅读:

Item current = items.get(currentIndex++);
text_heading.setText(current.getTextId());
text_explain.setText(current.getTextExplanationId());