自分で実装したいのですListView
が、問題があります。私は次のコードを持っています:
private ArrayList<ItemChat> itemsChat;
private ListView lv;
......
public void show (View v){
lv = (ListView)findViewById(R.id.listView);
itemsChat = new ArrayList<ItemChat>();
itemsChat.add(new ItemChat(1, "Patatas", "Tuberculo", "drawable/patatas"));
ItemChatAdapter adapter = new ItemChatAdapter(this, itemsChat);
lv.setAdapter(adapter);
}
onClick
レイアウトには、イベントが「表示」であるボタンがあります。ItemChat.java
正常に動作し、クラスで定義されたアダプタが表示されます。
しかし、同じコードで別のメソッドを呼び出しようとすると、まったく機能しません。
public void show2 (String c){
lv = (ListView)findViewById(R.id.listView);
itemsChat = new ArrayList<ItemChat>();
itemsChat.add(new ItemChat(1, "Patatas", c , "drawable/patatas"));
ItemChatAdapter adapter = new ItemChatAdapter(this, itemsChat);
lv.setAdapter(adapter);
}
2つの違いは議論です。最初に、イベントのためにビューVを渡しますonClick
。次に、「Tuberculo」の代わりにアダプターに表示しようとしますString c
が、機能しません。誰かアイデアはありますか?
PS:onClick
イベントshow()
はEclipseグラフィックレイアウトからのものです(から継承されますView.onClick
)
わかりました、これが私の完全なコードです。
xmppクライアントを実装しようとしていますが、正常に動作し、gtalkサーバーに接続し、usserをログに記録し、他のユーザーからメッセージを受信しました。ログに表示される受信メッセージなので、カスタムリストビュー(Wahtsappでのチャットのようなもの)でmjeを受信したいと思います。
まず、カスタムリストビューを作成し、「表示」を呼び出すボタンを実装して、正常に機能するかどうかをテストしました。
[表示]ボタンを押すと、カスタムリストビューに画像、タイトル、説明、その他の画像が表示されます。それは完璧に動作します。
次に、リストビューの説明を変更し、Receivedメッセージを入力します。だから私はメソッドshow(着信メッセージ)を使用します
私のmain.xmlファイルには2つのボタンがあります。ConectecとShow。
およびlistviews、id = listView
2つのファイルjavaがあります
ItemChat.java ItemChatAdapter.java
と私の主な活動
パブリッククラスMiCliente2はActivity{を拡張します
private final static String SERVER_HOST = "talk.google.com";
private final static int SERVER_PORT = 5222;
private final static String SERVICE_NAME = "gmail.com";
private final static String LOGIN = "xxxxxxxx@gmail.com";
private final static String PASSWORD = "xxxxxxx";
private XMPPConnection conn2;
private MessageListener messageListener;
private ArrayList<ItemChat> itemsChat;
private ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mi_cliente2);
}
//when press conect button, implement this.
//it´s works perfect
public void conect (View v){
try
{
initConnection();
Log.i("XMPPClient","Server conected");
}
catch(XMPPException ex){
Log.e("XMPPClient","Error conecting to server");
}
}
private void initConnection() throws XMPPException {
ConnectionConfiguration config =
new ConnectionConfiguration(SERVER_HOST, SERVER_PORT, SERVICE_NAME);
conn2 = new XMPPConnection(config);
config.setReconnectionAllowed(true);
try {
conn2.connect();
Log.i("XMPPClient", " Connected to " + conn2.getHost());
} catch (XMPPException ex) {
Log.e("XMPPClient", "Failed to connect to " + conn2.getHost());
Log.e("XMPPClient", ex.toString());
}
try {
conn2.login(LOGIN, PASSWORD);
Log.i("XMPPClient", "Logged in as " + conn2.getUser());
Presence presence = new Presence(Presence.Type.available);
presence.setStatus("On line");
conn2.sendPacket(presence);
// register listeners
ChatManager chatmanager = conn2.getChatManager();
conn2.getChatManager().addChatListener(new ChatManagerListener()
{
public void chatCreated(final Chat chat, final boolean createdLocally)
{
chat.addMessageListener(new MessageListener()
{
public void processMessage(Chat chat, Message message)
{
Log.i("XMPPClient","Received message: "
+ (message != null ? message.getBody() : "NULL"));
// I want to call show() passing message´s body
show(message.getBody());
}
});
}
});
} catch (XMPPException ex) {
Log.e("XMPPClient", " Failed to log in as " + LOGIN);
Log.e("XMPPClient", ex.toString());
}
}
//Not work when call show("something")
public void show(String v) {
Log.i("XMPPClient",v); // in log can see Received message
lv = (ListView)findViewById(R.id.listView);
itemsChat = new ArrayList<ItemChat>();
itemsChat.add(new ItemChat(1, "Patatas", "Tuberculo", "drawable/patatas"));
ItemChatAdapter adapter = new ItemChatAdapter(this, itemsChat);
Log.i("XMPPClient"," In show() before lv.setAdapter");
lv.setAdapter(adapter);
//this log never happend, only can see before msje
Log.i("XMPPClient","In show() after lvsetAdapter");
}
//pressing "Show" button
public void show2 (View v){
lv = (ListView)findViewById(R.id.listView);
itemsChat = new ArrayList<ItemChat>();
itemsChat.add(new ItemChat(1, "Patatas", "Tuberculo", "drawable/patatas"));
ItemChatAdapter adapter = new ItemChatAdapter(this, itemsChat);
lv.setAdapter(adapter);
}
}
着信メッセージとshow(meesage.getbody)に何も表示されず、logcatに表示されるのは次の場合のみです。Log.i( "XMPPClient"、 "In show()before lv.setAdapter"); リストビューではありません。