Я пытаюсь создать систему обмена сообщениями в приложении для Android. Когда пользователь переходит в фрагмент сообщения, мне нужно заполнить список сообщений предыдущим сообщением. Из того, что я прочитал, лучший способ сделать это - с помощью адаптера.Обновление спискаПросмотр через пользовательский адаптер во фрагменте
Вот мой адаптер сообщений
public class MessageAdapter extends ArrayAdapter<message> {
private final MessagesFragment context;
private final int layoutResourceId;
private final ArrayList<message> messages;
public MessageAdapter(MessagesFragment messagesFragment, int layoutResourceId, ArrayList<message> messages) {
super(null, layoutResourceId);
this.context = messagesFragment;
this.layoutResourceId = layoutResourceId;
this.messages = messages;
}
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
View row = convertView;
ViewHolder holder = null;
int direction = messages.get(i).userType;
//show message on left or right, depending on if
//it's incoming or outgoing
if (row == null) {
LayoutInflater inflater = ((MessagesFragment)context).getLayoutInflater();
int res = 0;
if (direction == DIRECTION_INCOMING) {
res = R.layout.message_right;
} else if (direction == DIRECTION_OUTGOING) {
res = R.layout.message_left;
}
convertView = inflater.inflate(res, viewGroup, false);
holder = new ViewHolder();
holder.txtMessage = (TextView) convertView.findViewById(R.id.txtMessage);
holder.txtDate = (TextView) convertView.findViewById(R.id.txtDate);
row.setTag(holder);
}
holder.txtMessage.setText(messages.get(i).message);
holder.txtDate.setText(messages.get(i).time);
return row;
}
static class ViewHolder
{
TextView txtMessage;
TextView txtDate;
}
}
Я называю это в моем onCreateView в моем фрагменте.
// Generates all of the messages
ArrayList<message> messages = getMessages;
View messagesView = inflater.inflate(R.layout.messages, container, false);
ListView listView = (ListView)messagesView.findViewById(R.id.listMessages);
listView.setAdapter(new MessageAdapter(MessagesFragment.this, R.id.listMessages, messages));
...
Мое приложение сбой при вводе фрагмента. Я взял кусочки кода примера и применил к моему приложению, но я не могу заставить его работать. Любые советы или очевидные ошибки я не вижу?
не могли бы вы положить журнал аварий? и изменить «super (null, layoutResourceId)»; to "super (messagesFragment.getActivity(), layoutResourceId);" – Rami