所以基本上我希望这个列表视图被洗牌所以它总是随机的。但是每个人都需要打开它自己的活动,无论它在列表视图中的位置都是常量(所以我很确定我不能使用位置。)所以我尝试使用(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);
}
}
});
}
}
任何人都知道如何阅读随机播放创建的数字顺序?如果有人知道如何,这可能是一种方式。谢谢,任何帮助表示赞赏。
答案 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()
这未经过测试,我只是想给你一个想法。