从混洗列表视图中打开活动

时间:2011-09-03 19:10:31

标签: android

所以基本上我希望这个列表视图被洗牌所以它总是随机的。但是每个人都需要打开它自己的活动,无论它在列表视图中的位置都是常量(所以我很确定我不能使用位置。)所以我尝试使用(TextView)视图).getText(并且它不像在Toast中那样读它。有什么想法吗?

public class Bands extends ListActivity{
int numBands;

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);



  final ArrayList<String> bands = new ArrayList<String>();
    bands.add(new String("Band0"));
    bands.add(new String("Band1"));
    bands.add(new String("Band2"));

    Collections.shuffle(bands);

  setListAdapter(new ArrayAdapter<String>(this, R.layout.item_list, bands));

  ListView lv = getListView();
  lv.setTextFilterEnabled(true);

  lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
      // When clicked, show a toast with the TextView text
      Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
          Toast.LENGTH_SHORT).show();
      if( ((TextView) view).getText() == "Band0"){
            Intent i = new Intent(Bands.this, Audio.class);
            i.putExtra("Band", 0);
            startActivity(i);
        }

    }

  });
}

}

任何人都知道如何阅读随机播放创建的数字顺序?如果有人知道如何,这可能是一种方式。谢谢,任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

如何进行此更改:

String text = ((TextView) view).getText();
if (text.equals("Band0") { 
...

答案 1 :(得分:1)

如果我的问题是正确的,那么每次列表视图都需要随机填充。在你的getView()中,你从列表中设置字符串,添加这个

getView之外

int remember = 0;
int[] rememberArray = new int[arraylist.size()-1]; //to store indexes that already has been drawn

getView()

 Random gen= new Random()
    int randomPosition = gen.nextInt(arraylist.size()-1);
    rememberArray[remember]=randomPosition;
   remember++;
    for(int i =0; i <= rememberArray.length;i++){
    if(!remember==rememberArray[i])
    {
     arraylist.get(randomPosition);

    } else { //generate again, probably you can create method for this, and apply recursion

    }
    } //proceed with the rest of the getView()

这未经过测试,我只是想给你一个想法。