Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法实现setAdatpter_Android_Adapter - Fatal编程技术网

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()
时,会显示什么?还是会崩溃?如果它崩溃了,你会在日志中得到什么错误信息?不是崩溃,只是什么都没有发生。我会写完整的代码,也许你能帮我。我以为问题是争论。