我想實現我自己的ListView
,但我有一些問題。我有以下代碼:麻煩實施setAdatpter
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);
}
在佈局,我有一個按鈕that's 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);
}
兩者之間的差異是論據。首先,我通過查看V因爲onClick
事件, 在第二,我嘗試顯示適配器String c
,而不是「Tuberculo」,但它不起作用。有沒有人有任何想法?
PS:onClick
事件show()
是在Eclipse圖形佈局(從View.onClick
繼承)
好吧,這裏是我的全部代碼。
我試圖實現一個xmpp客戶端,它工作正常,連接到gtalk服務器,登錄usser,並從其他用戶收到消息。接收到的消息我可以在日誌中看到,所以我想在自定義列表視圖中接收mje(類似於Wahtsapp中的聊天)。
首先我創建了一個自定義列表視圖並實現了一個調用「顯示」按鈕來測試它是否正常工作。
當我按Show按鈕時,我的自定義列表視圖顯示:圖片,標題,說明和其他圖片。這是完美的作品。
然後,我想改變我的listview中的描述,而不是它,把收到的消息。所以我使用方法顯示(傳入消息)
我的main.xml文件有一個2個按鈕。 Conectec和Show。
和列表視圖,ID =的ListView
有2個文件的Java
ItemChat.java ItemChatAdapter.java
,我的主要活動
公共類MiCliente2延伸活動{
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 = "[email protected]";
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」); 不是listview。
你說它根本不起作用。當你運行'show2()',什麼顯示?還是會崩潰?如果它崩潰了,你會在日誌中得到什麼錯誤信息? – Blumer
我在發佈的代碼中看不到問題。你的問題在別處。你能發佈更多的代碼嗎? –
不崩潰,突然沒有任何鞭打。我會把完整的代碼,也許可以幫助我。我認爲這個問題是爭論。 – cristianego