From 691f3b39821c829c84bfcd434e8bb1177c0cc223 Mon Sep 17 00:00:00 2001 From: Sebastian Kaspari Date: Tue, 9 Mar 2010 01:57:22 +0100 Subject: [PATCH] Get channel view from channel list and not from a (broken) cache --- src/org/yaaic/adapter/DeckAdapter.java | 26 +++++++++----------------- src/org/yaaic/view/ServerActivity.java | 14 ++++++++++---- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/org/yaaic/adapter/DeckAdapter.java b/src/org/yaaic/adapter/DeckAdapter.java index 9305b06..6cb5179 100644 --- a/src/org/yaaic/adapter/DeckAdapter.java +++ b/src/org/yaaic/adapter/DeckAdapter.java @@ -20,7 +20,6 @@ along with Yaaic. If not, see . */ package org.yaaic.adapter; -import java.util.HashMap; import java.util.LinkedList; import org.yaaic.model.Channel; @@ -41,7 +40,6 @@ public class DeckAdapter extends BaseAdapter { public static final String TAG = "Yaaic/DeckAdapter"; - private HashMap map = new HashMap(); private LinkedList channels = new LinkedList(); private MessageListView currentView; private String currentChannel; @@ -92,13 +90,15 @@ public class DeckAdapter extends BaseAdapter * @param channel * @return The item */ - public MessageListView getItemByName(String channel) + public int getPositionByName(String name) { - if (map.containsKey(channel)) { - return map.get(channel); + for (int i = 0; i < channels.size(); i++) { + if (channels.get(i).getName().equals(name)) { + return i; + } } - return null; + return -1; } /** @@ -153,22 +153,14 @@ public class DeckAdapter extends BaseAdapter { return currentView != null; } - + /** * Get view at given position */ public View getView(int position, View convertView, ViewGroup parent) { Channel channel = getItem(position); - convertView = map.get(channel.getName()); - - if (convertView == null) { - MessageListView view = renderChannel(channel, parent); - map.put(channel.getName(), view); - return view; - } else { - return convertView; - } + return renderChannel(channel, parent); } /** @@ -190,8 +182,8 @@ public class DeckAdapter extends BaseAdapter )); list.setBackgroundColor(0xff222222); list.setPadding(5, 5, 5, 5); - list.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL); list.setScrollContainer(false); + list.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL); list.setSelection(list.getAdapter().getCount() - 1); // scroll to bottom return list; diff --git a/src/org/yaaic/view/ServerActivity.java b/src/org/yaaic/view/ServerActivity.java index 253dac5..23c45fb 100644 --- a/src/org/yaaic/view/ServerActivity.java +++ b/src/org/yaaic/view/ServerActivity.java @@ -221,11 +221,17 @@ public class ServerActivity extends Activity implements ServiceConnection, Chann while(channel.hasBufferedMessages()) { Message message = channel.pollBufferedMessage(); - MessageListView view = (MessageListView) deckAdapter.getItemByName(target); - if (view != null) { - MessageListAdapter adapter = view.getAdapter(); - adapter.addMessage(message); + int position = deckAdapter.getPositionByName(target); + + if (position != -1) { + MessageListView view = (MessageListView) deck.getChildAt(position); + if (view != null) { + MessageListAdapter adapter = view.getAdapter(); + adapter.addMessage(message); + } else { + Log.d(TAG, "MessageListView Adapter is null"); + } } if (deckAdapter.isSwitched()) {