0
我有一個自定義的ArrayAdapter在adroid聊天應用程序中的listView。我在我的editText組件中輸入一些文本,然後當我按下按鈕時提交文本。使用自定義ArrayAdapter添加一行到列表視圖,而不是更新整個列表
問題是,當我的自定義適配器中的getView方法被調用時,整個列表將刷新,並且列表中的每一行都與提交的最後一個信息相同。
是否有人知道如何在listView中使用自定義ArrayAdapter和其他行來獲取原始文本?
這是我如何調用適配器:
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;
在您的代碼中似乎存在一個錯誤。對於我們來幫助你,我們(至少我)需要你的適配器代碼 – 2012-08-11 13:22:20
謝謝你添加代碼:) – 2012-08-11 13:45:58
感謝您的回答。有用! – AlexGo 2012-08-11 13:56:24