Я пытаюсь настроить OnItemClickListener для элементов RecyclerView, чтобы открыть новое действие при нажатии на элемент в RecyclerView.
Я занимаюсь разработкой для телефонов Android и работаю над API 19 на самом делеустройство (минимальное поддерживаемое API для моего приложения - 15).Я уже пробовал разные примеры в Интернете, но я не могу обойти это с рабочим кодом.
Это строки, которые я получаю в сообщении об ошибке:
LevelActivity:
public class LevelActivity extends AppCompatActivity implements ViewHolder.OnItemListener {
private static final String TAG = "LevelActivity";
private List<Item> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level);
List<Item> list = fill_with_data();
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rv_item_list);
RecyclerViewAdapter adapter = new RecyclerViewAdapter(list, getApplication(),this);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
public List<Item> fill_with_data() {
List<Item> list = new ArrayList<>();
list.add(new Item("Batman vs Superman"));
list.add(new Item("X-Men: Apocalypse"));
list.add(new Item("Captain America: Civil War"));
list.add(new Item("Kung Fu Panda 3"));
list.add(new Item("Warcraft"));
list.add(new Item("Alice in Wonderland"));
return list;
}
@Override
public void onItemClick(int position) {
list.get(position);
Intent intent = new Intent(this,QuestionActivity.class);
startActivity(intent);
}
}
ViewHolder:
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView name;
OnItemListener mOnItemListener;
ViewHolder(View itemView, OnItemListener onItemListener) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.row_item);
this.mOnItemListener = onItemListener;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
mOnItemListener.onItemClick(getAdapterPosition());
}
public interface OnItemListener {
void onItemClick(int position);
}
AndroidManifest:
<!-- A child of a the level activity -->
<activity android:name=".QuestionActivity"
android:label="Question Activity"
android:parentActivityName=".LevelActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".LevelActivity" />>
</activity>
Если вам понадобится больше кода, сообщите мне.
Я ожидаю нажать на элементы списка RecyclerViewи откройте новую активность (QuestionActivity) для начала.Это будет приложение для викторины, когда вы нажимаете на разных уровнях, оно открывает другой стартовый вопрос, но такой же макет, как у QuestionActivity.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: ..., PID: 1269
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at com.example.marvelquiz.LevelActivity.onItemClick(LevelActivity.java:58)
at com.example.marvelquiz.ViewHolder.onClick(ViewHolder.java:22)
at android.view.View.performClick(View.java:4637)
at android.view.View$PerformClick.run(View.java:19422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5586)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)