Android 无法实现setAdatpter
我想实现我自己的Android 无法实现setAdatpter,android,adapter,Android,Adapter,我想实现我自己的ListView,但我有一些问题。我有以下代码: private ArrayList<ItemChat> itemsChat; private ListView lv; ...... public void show (View v){ lv = (ListView)findViewById(R.id.listView); itemsChat = new ArrayList<ItemChat>(); itemsChat.ad
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
事件,我传递了视图V,
在第二种情况下,我尝试在适配器字符串c
中显示,而不是“Tuberculo”,但它不起作用。有人有什么想法吗
PS:show()
中的onClick
事件来自Eclipse图形布局(继承自View.onClick
)
好的,这是我的全部代码
我尝试实现一个xmpp客户机,它工作正常,连接到gtalk服务器,登录usser,并接收来自其他用户的消息。我可以在日志中看到收到的消息,因此我希望在自定义列表视图中接收mje(类似于Wahtsapp中的聊天)
首先,我创建了一个自定义listview,并实现了一个调用“Show”的按钮来测试它是否工作正常
当我按下“显示”按钮时,我的自定义列表视图显示:图片、标题、说明和其他图片。这是完美的作品
然后,我希望在我的listview中更改描述,而不是它,将收到的消息放入。所以我使用了一个方法show(传入消息)
我的main.xml文件有两个按钮。连接和显示
和listView,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 = "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);
}
private final static String SERVER\u HOST=“talk.google.com”;
专用最终静态int服务器_端口=5222;
私有最终静态字符串服务\u NAME=“gmail.com”;
私有最终静态字符串登录=”xxxxxxxx@gmail.com";
私有最终静态字符串密码=“xxxxxxx”;
专用XMPPCONN2连接;
私有消息侦听器消息侦听器;
私人ArrayList itemsChat;
私有ListView lv;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mi_Client2);
}
//当按下conect按钮时,执行此操作。
//它的作品完美
公共空间连接(视图五){
尝试
{
initConnection();
Log.i(“XMPPClient”、“服务器连接”);
}
捕获(XMPPException-ex){
Log.e(“XMPPClient”,“连接到服务器时出错”);
}
}
私有void initConnection()抛出XMPPException{
连接配置配置=
新连接配置(服务器\主机、服务器\端口、服务\名称);
conn2=新的XMPPConnection(配置);
config.setReconnectionAllowed(true);
试一试{
conn2.connect();
Log.i(“XMPPClient”,“连接到”+conn2.getHost());
}捕获(XMPPException-ex){
Log.e(“XMPPClient”,“无法连接到”+conn2.getHost());
Log.e(“XMPPClient”,例如toString());
}
试一试{
conn2.登录(登录,密码);
Log.i(“XMPPClient”,“以“+conn2.getUser()身份登录”);
状态=新状态(Presence.Type.available);
状态(“在线”);
conn2.发送包(存在);
//注册侦听器
ChatManager ChatManager=conn2.getChatManager();
conn2.getChatManager().addChatListener(新ChatManagerListener())
{
已创建公共无效聊天室(最终聊天室,最终布尔值本地创建)
{
addMessageListener(新MessageListener()
{
public void processMessage(聊天室、消息消息)
{
Log.i(“XMPPClient”,“接收到的消息:”
+(message!=null?message.getBody():“null”);
//我想调用show()传递消息的主体
显示(message.getBody());
}
});
}
});
}捕获(XMPPException-ex){
Log.e(“XMPPClient”,“无法以“+登录”的身份登录);
Log.e(“XMPPClient”,例如toString());
}
}
//呼叫显示(“某物”)时不工作
公共无效显示(字符串v){
Log.i(“XMPPClient”,v);//在日志中可以看到收到的消息
lv=(ListView)findViewById(R.id.ListView);
itemsChat=newarraylist();
添加项目(新项目聊天(1,“Patatas”、“Tuberculo”、“drawable/Patatas”);
ItemChatAdapter=新的ItemChatAdapter(此,itemsChat);
Log.i(“XMPPClient”,“在lv.setAdapter之前的show()中”);
低压设置适配器(适配器);
//此日志从未发生过,只能在msje之前看到
Log.i(“XMPPClient”,“在lvsetAdapter之后的show()中”);
}
//按“显示”按钮
公共空间展示2(视图五){
lv=(ListView)findViewById(R.id.ListView);
itemsChat=newarraylist();
添加项目(新项目聊天(1,“Patatas”、“Tuberculo”、“drawable/Patatas”);
ItemChatAdapter=新的ItemChatAdapter(此,itemsChat);
低压设置适配器(适配器);
}
}
当传入消息和显示(meesage.getbody)不显示任何内容时,在logcat中我只看到:
Log.i(“XMPPClient”,“在lv.setAdapter之前的show()中”);
不是listview。首先,什么是“c”?如果使用onClick属性在xml上设置它,则无法将任何字符串值传递给此方法。。。那么“c”现在是什么?如果您从任何其他地方调用此方法,那么它应该可以工作。。。但是,如果在xml上设置按钮的onClick属性,那么应该将其用作
public void show(View v)
您可能想在show(视图c)中调用show(字符串c)方法?因为最终会调用…我在发布的代码中没有看到问题。你的问题在别处。你能发布更多的代码吗?你说它根本不起作用。运行
show2()
时,会显示什么?还是会崩溃?如果它崩溃了,你会在日志中得到什么错误信息?不是崩溃,只是什么都没有发生。我会写完整的代码,也许你能帮我。我以为问题是争论。