2013-07-24 3 views
3

문자열 배열에서 항목을 하나씩 읽는 중 문제가 발생했습니다. 예를 들어, 내가 10 개 항목 문자열 배열을 가지고 : 그래서 내가이 코드를 사용하여 무작위로 메신저 항목을 표시하는 방법을 알고android에서 문자열 배열에서 항목을 읽는 방법

<string-array name="arr"> 
    <item>First</item> 
    <item>Second</item> 
    <item>...</item> 
    <item>Tenth</item> 
</string-array> 

Resources res = getResources(); 

myString = res.getStringArray(R.array.arr); 

int length=myString.length; 
int index=rgenerator.nextInt(length); 
String q = myString[index]; 

tv = (TextView) findViewById(R.id.text); 
tv.setText(q); 

그리고 모든 버튼에 텍스트 뷰에

는 무작위로 항목을 표시 클릭 배열에서.

문제는 임의로 문자열 배열에서 표시 항목을 만드는 방법입니다. 마찬가지로, 그것은 First를 표시하는 것으로 시작하고, 클릭하면 두 번째를 표시하고 배열 끝까지 계속 표시됩니다.
도와주세요!

답변

2

onClick있어서 외부 가변

int currentIndex=0; 

선언.

onClick(View v) 
{ 
//Verify if only that btn is clicked 
{ 
tv.setText(myString[(currentIndex++)%(myString.length)]); 
} 
} 

에서

작동 바랍니다. 응용 프로그램 자원이 아직 준비가되지 않기 때문에

+0

는 사람을 주셔서 감사합니다! 그것은 일했다! 내 실수는 내 카운터가 onClick 메서드 안에 있음을 나타냅니다. 다시 한 번 감사드립니다! – user1671523

+1

n 번의 클릭 후'IndexOutOfBoundsException' (n = array.lenght)로 충돌합니다. 'tv.setText (myString [currentIndex ++]);'를 tv.setText (myString [currentIndex ++ % myString.length]); ' –

+0

@VladK로 변경하십시오. 제안 해 주셔서 감사합니다. 당신이 말한대로 편집했습니다. –

2

는, 당신은 당신의 testArray 필드 이런 식으로 초기화 할 수 없습니다

int i=0; 
String q = myString[i]; 
i++; 
3

을 시도합니다. 에 코드를 변경 :

package com.xtensivearts.episode.seven; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class Episode7 extends ListActivity { 
String[] mTestArray; 

/** Called when the activity is first created. */ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    // Create an ArrayAdapter that will contain all list items 
    ArrayAdapter<String> adapter; 

    mTestArray = = getResources().getStringArray(R.array.testArray);  

    /* Assign the name array to that adapter and 
    also choose a simple layout for the list items */ 
    adapter = new ArrayAdapter<String>(
    this, 
    android.R.layout.simple_list_item_1, 
    mTestArray); 

    // Assign the adapter to this ListActivity 
    setListAdapter(adapter); 
    } 
} 
관련 문제