2015-08-02 2 views
0

Я разрабатываю приложение, где мне нужно генерировать случайные значения от arraylist obj и сохранять сгенерированные значения до rndmObj arraylist. Мне нужно затем показать все значения rndmObj многострочному текстовому окну tvObjectList1 на экране. Но при открытии приложения он падает с обычным сообщением «к сожалению, приложение закрыто».Отображение всех значений arraylist в текстовом виде

Я знаю, что есть определенные проблемы с кодом. Поэтому logcat не помог бы.

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.level); 


    prepareObjList(); 
    randObjFunc(); 
    }} 

    private void prepareObjList() { 
    // TODO Auto-generated method stub 
    //adding string values to arrayList for tvObjectList1 
    obj = new ArrayList<String>(); 
    obj.add("bowTie"); 
    obj.add("key"); 
    obj.add("grosshoper"); 


    //adding imageViews to objImg arrayList 
    objImg = new ArrayList<Integer>(); 
    objImg.add(R.drawable.level1_bowtie); 
    objImg.add(R.drawable.level1_key); 
    objImg.add(R.drawable.level1_grasshopper); 
} 


final Random randomGenerator = new Random(); 
ArrayList<String>obj; 
ArrayList<String>rndmObj; 
public String item=null; 
private void randObjFunc(){ 
    int index=0; 
    while(index <10){ 
     item = obj.get(randomGenerator.nextInt(obj.size())); 
     rndmObj.add(index, item); 
     obj.remove(obj.indexOf(item)); 
     index++; 
    } 
    dispRndmObj(); 
} 


private void dispRndmObj(){ 
    for (int i=0; i<rndmObj.size();i++){ 
     ((TextView) findViewById(R.id.tvObjectList1)) 
     .setText(rndmObj.get(i).toString()); 
    }   

} 

Ошибка синтаксиса и приложение не установлены отлично. все инициализации выполняются из всех переменных, arraylists и т. д. Я надеюсь на быстрые и полезные советы, рекомендации и фрагменты кода.

+1

'obj' никогда не инициализируется. Вы работаете на 'null'. –

+0

Кроме того, теги очень расплывчаты. Вы должны добавить язык и платформу - java и android? –

+0

obj инициализирован методом onCreate. и да, я разрабатываю для Android через java на Eclipse. –

ответ

0

Вы когда-либо инициализировали obj и rndmObj?

Попробуйте

ArrayList<String> obj = new ArrayList<>(); 
ArrayList<String> rndmObj = new ArrayList<>(); 

Также

randomGenerator.nextInt(obj.size()) 

Выбросите IllegalArgumentException если OBJ пуст (потому что вы никогда не заполнить его, что вы, кажется, например, не.)

0

Ну, В коде есть несколько ошибок, в первую очередь инициализирующихся obj и rndmObj как

ArrayList<String> obj = new ArrayList<String>(); ArrayList<String> rndmObj = new ArrayList<String>();

После этого вы получите IllegalStateException, скорее всего, на obj.size(), как он будет возвращать ноль, не ожидаемый nextInt(n); методом. Итак, тогда вам, вероятно, придется вставлять некоторые значения в obj или в зависимости от того, что вы хотите сделать дальше. Как только вы это сделаете, вы поймете, что делать дальше. Надеюсь, что это поможет, вы можете оставить комментарий, если он застрял где угодно. :)

+0

обновил вопрос .. пожалуйста, прочитайте его –

+0

@SaadAhmedKhan Вы все еще не инициализировали 'rndmObj' в обновленном чуваке кода. – Perry

+0

Также в вашем вопросе вы указали свои переменные как 'arraylist1' и' arraylist2', но в коде вы фактически используете 'obj' и' rndmObj'. Пожалуйста, попробуйте сохранить структуру кода в своем вопросе. Просто дополнительное предложение :) – Perry

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