Получить значение из Activity в пользовательский адаптер массива - PullRequest
0 голосов
/ 10 сентября 2018

Я создаю приложение чата. Поэтому я хотел добавить количество сообщений, которые пользователь получает от своего друга. Чтобы показать, что я создал пользовательский Array adapter, потому что мой список состоит из имени друга и notification textview.

Friend List

Итак, у меня есть данные в моей активности list_of_registerd_users:

Data From Firebase

Как я могу отправить эти данные в пользовательский класс array adapter для настройки просмотра уведомлений:

Настраиваемый класс адаптера массива :

public class CustomArrayAdapter extends ArrayAdapter<String> {
    private Context mContext;
    private int mRes;
    private ArrayList<String> data;

    private String numOfMsgs;

    public CustomArrayAdapter(Context context, int resource,
                              ArrayList<String> objects) {

        super(context, resource, objects);

        this.mContext = context;
        this.mRes = resource;
        this.data = objects;
    }

    @Override
    public String getItem(int position) {
        // TODO Auto-generated method stub
        return super.getItem(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View row = convertView;
        LayoutInflater inflater = LayoutInflater.from(mContext);
        row = inflater.inflate(mRes, parent, false);

        String currentUser = getItem(position);

        TextView friendName = (TextView) row.findViewById(R.id.tvFriendName);

        String Frndname = currentUser;
        friendName.setText(Frndname);


        TextView notificationView = (TextView) row.findViewById(R.id.tvNotif);


//here i wanted to get the data noOfMsgs
        Toast.makeText(mContext, "noOfMsgs:" + numOfMsgs, Toast.LENGTH_LONG).show();
            notificationView.setText(noOfMsgs);
        return row;
    }
}

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вам нужно только обновить объект списка, который вы передаете в CustomArrayAdapter, а затем уведомить список.

adapter.notifyDataSetChanged ()

Когда вы передаете объект списка адаптеру, любые изменения в списке автоматически обновляются в объекте «данные». Вы должны просто обновить представление.

0 голосов
/ 10 сентября 2018

Вам просто нужно инициализировать адаптер и подключить адаптер к ListView

ArrayList<String> items = new ArrayList<>();
items.add(item1);
items.add(item2);
items.add(item3);

CustomArrayAdapter<String> itemsAdapter = new CustomArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
listview.setAdapter(itemsAdapter);
...