gpt4 book ai didi

java - 在搜寻检视中搜寻,与项目不符

转载 作者:行者123 更新时间:2023-12-03 01:40:17 24 4
gpt4 key购买 nike

我的代码如下所示,我有一个音频的ArrayList及其各自的名称,该名称显示在ListView中,单击该键即可播放音频,到目前为止一切正常。

但是,当我执行音频搜索并单击该项目时,它始终会播放第一个声音,而不是应搜索的声音,因为我认为适配器“memes.class”中存在问题,我是java / android的新手,我不知道会是什么。

主要 Activity

public class MainActivity extends AppCompatActivity {
ListView lv;
MediaPlayer mp;
ArrayList<memes> item;
ArrayAdapter<memes> arrayAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.memes_main);

lv = findViewById(R.id.lv);
mp = new MediaPlayer();

item = new ArrayList<>();
item.add(new memes("Gemidão", R.raw.gemidaoremix));
item.add(new memes("Nunca nem vi", R.raw.nuncanemvi));
item.add(new memes("Caga", R.raw.caga));
item.add(new memes("Cagado de fome", R.raw.cagado));
item.add(new memes("Cala Boca", R.raw.calaboca));
item.add(new memes("Canal", R.raw.canal));
item.add(new memes("Capeta", R.raw.capeta));

arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item);
lv.setAdapter(arrayAdapter);

//play audio
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
playSong(position);
}
});

}

//here is where i do the searchview logic
public boolean onCreateOptionsMenu(final Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.busca, menu);

MenuItem menuItem = menu.findItem(R.id.sv);

SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}

@Override
public boolean onQueryTextChange(String newText) {
arrayAdapter.getFilter().filter(newText);
return true;
}
});

return super.onCreateOptionsMenu(menu);
}

public void playSong(int songIndex) {

mp.reset();
mp = MediaPlayer.create(this, item.get(songIndex).getResId());

mp.start();
}

@Override
public void onDestroy() {
super.onDestroy();
mp.release();
}
}

适配器

模因类
public class memes {

private String nome;
private int resID;

memes(String nome, int resID) {
this.nome = nome;
this.resID = resID;
}

public String getNome() {
return nome;
}

int getResId() {
return resID;
}

@Override
public String toString() {
return nome;
}
}

最佳答案

发生这种情况是因为您从ArrayList中获取了值,并且ListView和ArrayList的搜索索引不同。试试这个代码

public void playSong(int songIndex) {

mp.reset();
mp = MediaPlayer.create(this, lv.getAdapter().getItem(songIndex).getResId());

mp.start();
}

关于java - 在搜寻检视中搜寻,与项目不符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47956333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com