Как отправить данные с адаптера на активность и отобразить их в виде утилита? - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь передать данные из адаптера в действие и отобразить их в окне повторного использования.Я получаю исключение NullPointerException при запуске приложения.Что я делаю не так?

Это действие, в котором я хочу отобразить данные :

public class ListOfChatsActivity extends AppCompatActivity {
Toolbar lToolbar;
RecyclerView lRV;
BottomNavigationView lBnv;
ListOfChatsAdapter adapter;
LinearLayoutManager layoutManager;
ArrayList<String> chatList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_of_chats);

    lToolbar = findViewById(R.id.lToolbar);
    lRV = findViewById(R.id.lRV);
    lBnv = findViewById(R.id.lBnv);
    Intent intent = this.getIntent();
    if(intent!=null){
    String string = intent.getStringExtra("username");
    chatList.add(string);}

    adapter = new ListOfChatsAdapter(chatList, getApplicationContext());
    layoutManager = new LinearLayoutManager(getApplicationContext());
    lRV.setAdapter(adapter);
    lRV.setLayoutManager(layoutManager);
}

Это адаптер, откуда я хочуотправьте данные:

public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder> {

ArrayList<User> friendsSearchedList = new ArrayList<>();
Context mContext;

public SearchAdapter(ArrayList<User> friendsSearchedList, Context mContext){
    this.friendsSearchedList = friendsSearchedList;
    this.mContext = mContext;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_user_item,
            parent, false);
    ViewHolder holder = new ViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
    final User username = friendsSearchedList.get(position);
    holder.text.setText(username.getUsername());
   holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String iUsername = holder.text.getText().toString();
            Intent intent = new Intent();
            intent.putExtra("username", iUsername);
        }
    });

}

@Override
public int getItemCount() {
    return friendsSearchedList == null ? 0:friendsSearchedList.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
    TextView text;
    Button button;
    RelativeLayout relativeLayout;
    public ViewHolder(View itemView){
        super(itemView);

        text = itemView.findViewById(R.id.sText);
        button = itemView.findViewById(R.id.addFriend);
        relativeLayout = itemView.findViewById(R.id.relativeLayout);
    }
}

}

Я не открываю активность с этого адаптера.Я просто хочу отправить статисты.Я пробовал больше вариантов, но я не понял правильно.

1 Ответ

0 голосов
/ 28 мая 2019

Изменить 1

adapter = new ListOfChatsAdapter(chatList, getApplicationContext());

Почему здесь используется ListOfChatsAdapter?Вы включили SearchAdapter в качестве адаптера для использования в RecyclerView.

Изменение 2

Объект ViewHolder, возвращаемый onCreateViewHolder(), должен иметь тип SearchAdapter.ViewHolder а не только ViewHolder.То же самое относится к первому аргументу onBindViewHolder().

Попробуйте это и проверьте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...