0
나는 adroid 채팅 응용 프로그램에서 listView에 대한 사용자 정의 ArrayAdapter를 보유하고 있습니다. 내 editText 구성 요소에 일부 텍스트를 입력 한 다음 단추를 누를 때 텍스트를 제출합니다.사용자 정의 ArrayAdapter가있는 listView에 행을 추가하고 전체 목록을 업데이트하지 않습니다.
문제점은 내 사용자 정의 어댑터의 getView 메소드를 호출 할 때 전체 목록이 새로 고쳐지고 목록의 각 행이 마지막으로 제출 된 정보와 동일하게됩니다.
사용자가 ArrayAdapter를 사용하여 listView에 행을 추가하고 다른 행을 원래 텍스트로 추가하는 방법을 아는 사람이 있습니까?
m_discussionThread = new ArrayList<String>();
m_discussionThreadAdapter = new ChatListAdapter(this, m_discussionThread);
list.setAdapter(m_discussionThreadAdapter);
Button send = (Button) this.findViewById(R.id.send);
send.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
String text = message.getText().toString();
Message msg = new Message(to, Message.Type.chat);
msg.setBody(text);
m_connection.sendPacket(msg);
m_discussionThread.add(text);
runOnUiThread(new Runnable() {
@Override
public void run() {
m_discussionThreadAdapter.notifyDataSetChanged();
}
});
}
});
이 어댑터입니다 : 하단 근처
public ChatListAdapter(Context context, ArrayList<String> chatValue) {
super(context,R.layout.list_row_layout_even, chatValue);
this.context = context;
this.chatValue = chatValue;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_row_layout_even, parent, false);
TextView chatText = (TextView) rowView.findViewById(R.id.chat_message);
chatText.setText(chatValue.get(chatValue.size()-1).toString());
return rowView;
코드에 버그가있는 것 같습니다. 우리가 당신을 도울 수 있도록, 우리는 (적어도, 나는) 어댑터 코드를 필요로합니다 –
코드를 추가해 주셔서 감사합니다 :) –
답해 주셔서 감사합니다. 그것은 작동합니다! – AlexGo