有没有人使用RecyclerView找到一种方法来设置一个onClickListener项目RecyclerView?我想为每个项目的每个布局设置一个监听器,但这似乎有点太麻烦我确信有一种方法RecyclerView可以听取这个onClick事件,但我无法弄明白.
什么是最简单的方法来显示一个字符串和图标列表RecyclerView?
因为ListView我在没有单独的适配器的情况下使用以下代码(这里是GitHub上的完整项目):

mListView = (ListView) findViewById(R.id.list_view);
mListView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
mPlanets) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_stars_black_24dp, 0, 0, 0);
return view;
}
});
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view,
int position,
long id) {
Toast.makeText(getApplicationContext(),
"You have clicked " + mPlanets[position],
Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用ArrayAdapter,并android.R.layout.simple_list_item_1与RecyclerView …
在我的应用程序中,我需要快速 询问用户input.
我需要从这个 Flash-Activity 获得一个结果,然后回到上一个.
我已经读过这个StartActivityForResult()方法,但我还不确定如何正确使用它,任何例子?
编辑:
我试图通过intent(作为结果)使用我在应用于StartActivityForResult()的此方法的所有应用程序中使用的方法传递Player对象:
在我的第二个Activity(我需要得到结果的那个):
Intent intent = new Intent();
Player playerKilled = players.get(position);
Bundle bundle = new Bundle();
bundle.putSerializable("PLAYER_KILLED", (Serializable) playerKilled);
intent.putExtras(bundle);
setResult(Activity.RESULT_OK, intent);
finish();
Run Code Online (Sandbox Code Playgroud)
我的主要活动,我需要将结果带到:
if (resultCode == Activity.RESULT_OK) {
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
playerKilled = (Player)bundle.getSerializable("PLAYER_KILLED");
Toast.makeText(this, playerKilled.getName() + "the " + playerKilled.getCardName() + " has died, and he/she had the ID: " + playerKilled.getId(), Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud) 与 ListView 不同,Android RecyclerView 的实现似乎太复杂了。由于 RecyclerView 子项没有 OnItemClickListener,因此我一直在尝试实现以下方法来注册单击事件:
final RecyclerView rv=(RecyclerView)findViewById(R.id.recycler_view);
LinearLayoutManager llm=new LinearLayoutManager(this);
rv.setLayoutManager(llm);
MyRVAdapter rva=new MyRVAdapter(persons);
rv.setAdapter(rva);
rv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int itemPosition = rv.indexOfChild(v);
Log.d("Tag", String.valueOf(itemPosition));
}
});
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我无法让这段代码工作。点击事件根本没有注册!有人可以告诉我我做错了什么吗?我已经看到了一些解决方案,但我认为这应该可行。感谢您的帮助!