RrecyclerView / Список setOnClickListener

Я сделал recyclerView, и каждый ребенок - это «Деталь».

Теперь я спрашиваю, как отправить пользователя к следующему действию, когда он нажимает «Подробности». За каждый щелчок отправляйте его в другое действие.

 private List<ParentObject> initData() {
    TitleCreator titleCreator = TitleCreator.get(this);
    List<TitleParent> titles = titleCreator.getAll();

    List<ParentObject> parentObject = new ArrayList<>();
    for(TitleParent title:titles)
    {
        List<Object> childList = new ArrayList<>();
        childList.add(new TitleChild("Detail", ""));
        title.setChildObjectList(childList);
        parentObject.add(title);
    }
    return parentObject;

}

Это код, в котором я помещаю каждый ребенок как «Деталь».

У меня было четыре заголовка Родитель и, конечно же, четыре заголовка ребенок. Когда пользователь щелкает по первому * родительскому заголовку, он открывает заголовок ребенок. Вопрос в том, когда пользователь нажимает на этот заголовок ребенок, как отправить его в другое действие?

RrecyclerView / Список setOnClickListener

Вот мой адаптер fil

package com.example.user_pc.glavnastranicaprojekat.Adapter;


import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import 
com.bignerdranch.expandablerecyclerview.Adapter.ExpandableRecyclerAdapter;
import com.bignerdranch.expandablerecyclerview.Model.ParentObject;
import com.example.user_pc.glavnastranicaprojekat.models.TitleChild; 
import com.example.user_pc.glavnastranicaprojekat.models.TitleParent;
import com.example.user_pc.glavnastranicaprojekat.R;
import 
com.example.user_pc.glavnastranicaprojekat.ViewHolders.TitleChildViewHolder;
import
com.example.user_pc.glavnastranicaprojekat.ViewHolders.TitleParentViewHolder;

import java.util.List;



public class MyAdapter extends 
ExpandableRecyclerAdapter<TitleParentViewHolder,TitleChildViewHolder> {

LayoutInflater inflater;

public MyAdapter(Context context, List<ParentObject> parentItemList) {
    super(context, parentItemList);
    inflater = LayoutInflater.from(context);
}

@Override
public TitleParentViewHolder onCreateParentViewHolder(ViewGroup viewGroup) {
    View view = inflater.inflate(R.layout.list_parent,viewGroup,false);
    return new TitleParentViewHolder(view);
}

@Override
public TitleChildViewHolder onCreateChildViewHolder(ViewGroup viewGroup) {
    View view = inflater.inflate(R.layout.list_child,viewGroup,false);
    return new TitleChildViewHolder(view);
}

@Override
public void onBindParentViewHolder(TitleParentViewHolder titleParentViewHolder, int i, Object o) {
    TitleParent title = (TitleParent)o;
    titleParentViewHolder._textView.setText(title.getTitle());

}

@Override
public void onBindChildViewHolder(TitleChildViewHolder titleChildViewHolder, int i, Object o) {
    TitleChild title = (TitleChild)o;
    titleChildViewHolder.option1.setText(title.getOption1());
    titleChildViewHolder.option2.setText(title.getOption2());

}
}

TitleParent.java:

package com.example.user_pc.glavnastranicaprojekat.models;

import com.bignerdranch.expandablerecyclerview.Model.ParentObject;

import java.util.List;
import java.util.UUID;



public class TitleParent implements ParentObject{

private List<Object> mChildrenList;
private UUID _id;
private String title;

public TitleParent(String title) {
    this.title = title;
    _id = UUID.randomUUID();
}

public UUID get_id() {
    return _id;
}

public void set_id(UUID _id) {
    this._id = _id;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

@Override
public List<Object> getChildObjectList() {
    return mChildrenList;
}

@Override
public void setChildObjectList(List<Object> list) {
    mChildrenList = list;
}
}

Вот TitleChild.java:

package com.example.user_pc.glavnastranicaprojekat.models;


public class TitleChild {

public String option1;
public String option2;

public TitleChild(String option1, String option2) {
    this.option1 = option1;
    this.option2 = option2;
}

public String getOption1() {
    return option1;
}

public void setOption1(String option1) {
    this.option1 = option1;
}

public String getOption2() {
    return option2;
}

public void setOption2(String option2) {
    this.option2 = option2;
}


}

TitleCreator.java:

package com.example.user_pc.glavnastranicaprojekat.models;


import android.content.Context;

import java.util.ArrayList;
import java.util.List;



public class TitleCreator {
static TitleCreator _titleCreator;
List<TitleParent> _titleParents;

public TitleCreator(Context context) {
    _titleParents = new ArrayList<>();


    TitleParent title = new TitleParent(String.format("Coppa"));
    _titleParents.add(title);


    TitleParent title1 = new TitleParent(String.format("Levante"));
    _titleParents.add(title1);


    TitleParent title2 = new TitleParent(String.format("Monument"));
    _titleParents.add(title2);

    TitleParent title3 = new TitleParent(String.format("Comming soon"));
    _titleParents.add(title3);

}

public static TitleCreator get(Context context)
{
    if (_titleCreator == null)
        _titleCreator = new TitleCreator(context);
    return _titleCreator;
}

public List<TitleParent> getAll() {
    return _titleParents;
}
}

TitleChildViewHolder:

package com.example.user_pc.glavnastranicaprojekat.ViewHolders;


import android.view.View;
import android.widget.TextView;

import com.bignerdranch.expandablerecyclerview.ViewHolder.ChildViewHolder;

import com.example.user_pc.glavnastranicaprojekat.R;



public class TitleChildViewHolder extends ChildViewHolder {
public TextView option1,option2;
public TitleChildViewHolder(View itemView) {
    super(itemView);
    option1 = itemView.findViewById(R.id.option1);
    option2 = itemView.findViewById(R.id.option2);

}
}

TitleParentViewHolder:

package com.example.user_pc.glavnastranicaprojekat.ViewHolders;


import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

import com.bignerdranch.expandablerecyclerview.ViewHolder.ParentViewHolder;
import com.example.user_pc.glavnastranicaprojekat.R;



public class TitleParentViewHolder extends ParentViewHolder {
public TextView _textView;
public ImageButton _imageButton;

 public TitleParentViewHolder(View itemView) {
    super(itemView);
    _textView = itemView.findViewById(R.id.parentTitle);
    _imageButton =  itemView.findViewById(R.id.expandArrow);


}
}

Основная деятельность:

    RecyclerView recyclerView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
recyclerView = findViewById(R.id.myRecyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
MyAdapter adapter = new MyAdapter(this,initData());
    adapter.setParentClickableViewAnimationDefaultDuration();
    adapter.setParentAndIconExpandOnClick(true);

    recyclerView.setAdapter(adapter);

}

 private List<ParentObject> initData() {
    TitleCreator titleCreator = TitleCreator.get(this);
    List<TitleParent> titles = titleCreator.getAll();



    List<ParentObject> parentObject = new ArrayList<>();
    for(TitleParent title:titles)
    {
        List<Object> childList = new ArrayList<>();
        childList.add(new TitleChild("Detail", ""));
        title.setChildObjectList(childList);
        parentObject.add(title);

    }
    return parentObject;

}

какой у тебя вопрос? как переключаться между другими действиями или как запускать действие из адаптера?

firegloves 26.05.2018 16:01

пробовали ли вы HolderObject.MAIN_VIEW_INITILIZD_INTO_IT_OR_ITEM_VIEW.setOnC‌ lickListener (); ?

Jay Thummar 26.05.2018 16:01

Я добавил картинку, как хочу

XcombeX 26.05.2018 16:09

опубликуйте код вашего адаптера, пожалуйста

firegloves 26.05.2018 16:15

@firegloves Я публикую это

XcombeX 26.05.2018 16:18

Возможный дубликат RecyclerView onClick

Abu Yousuf 26.05.2018 16:25
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
73
2

Ответы 2

titleChildViewHolder.itemView.setOnClickListener(
      new OnClickListener(View v){
          context.startActivity(new Intent(context,DESTINATION_ACTIVITY.class)));
     }
);

Поместите этот код в onBindChildViewHolder

попробуйте что-нибудь вроде этого:

@Override
public void onBindChildViewHolder(TitleChildViewHolder titleChildViewHolder, int i, Object o) {
    TitleChild title = (TitleChild)o;
    titleChildViewHolder.option1.setText(title.getOption1());
    titleChildViewHolder.option2.setText(title.getOption2());

    titleChildViewHolder.option1.setOnClickListener(
      new OnClickListener(View v){
          context.startActivity(new Intent(context,ACTIVITY_TO_LAUNCH.class)));
     }
);
}

Если вам нужно, вы можете установить эквивалентный OnClickListener также на titleChildViewHolder.option2.

Возможно, вы могли бы добавить контейнер представлений option1 и option2, чтобы вы могли установить только один ClickListener

Я добавляю это в MainActivity, но он все еще не работает

XcombeX 26.05.2018 16:39

Вы не можете сделать это в упражнении. Во всех случаях, если вам нужна помощь, вы должны опубликовать свой код, иначе мы не сможем его прочитать и исправить.

firegloves 26.05.2018 16:49

Я добавляю, пожалуйста, проверьте сейчас

XcombeX 26.05.2018 16:54

Я не вижу MainActivity. В любом случае, почему бы вам не заменить предложенный мной метод onBindChildViewHolder вашим?

firegloves 26.05.2018 17:01

Я поставлю MainActivity, но мне нужно изменить какую-то строку кода ... потому что моя MainActivity длинная, я использую что-то для карты, входа в систему, регистрации и так далее ... где я должен поместить ваше предложение?

XcombeX 26.05.2018 17:06

Проверьте сейчас пожалуйста

XcombeX 26.05.2018 17:16

Я разместил метод onBindChildViewHolder. Нажмите ctrl + f на этой странице и найдите свой код, соответствующий этому методу, затем обновите этот метод тем, что я туда поместил.

firegloves 26.05.2018 18:07

Я все еще не просыпаюсь

XcombeX 26.05.2018 19:37

Мне нужно сделать этот метод в MainActivity, верно? А затем вызвать этот метод в методе onCreat?

XcombeX 26.05.2018 19:41

Вы хоть представляете, что делаете? Я не могу вам помочь, если вы не изучили базовые функции Android и RecyclerView.

firegloves 26.05.2018 19:45

Я никогда не использовал onBundChildViewHolder ... и впервые использую режим ресайклера

XcombeX 26.05.2018 19:47

Так что прочтите официальную документацию по этому поводу. Найдите какое-нибудь руководство или учебное пособие, попытайтесь понять их функции, затем попробуйте сами, и если вы не сможете решить, вернитесь, чтобы попросить о помощи. Как сейчас мы не понимаем друг друга

firegloves 26.05.2018 19:49

Другие вопросы по теме