2011-05-23 41 views
0

list_item.xml:http://pastebin.com/bn56L3NNsetListAdapter不会在ListActivity显示我的字符串数组

的onCreate()之后,创造了通讯对象后会发生什么,我得到它得到回升“连接建立”消息在另一个线程中,然后我在receiveMessage中获得消息,然后发送“list”并再次调用receiveMessage。

我已经检查Log.v,我确实收回了我想要列出的消息,我的问题是当我到达这些行时无法在ListActivity中显示它,也许我应该替换它们别的东西?:

setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, userRooms)); 
ListView lv = getListView(); 
lv.setTextFilterEnabled(true); 

全码:

package elf.app; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import elf.app.comm.CommClient; 
import elf.app.comm.CommListener; 
import elf.app.entity.ELFList; 
import elf.app.entity.Entry; 

public class RoomListActivity extends ListActivity implements CommListener { 
    private ELFList eList; 
    private String[] userRooms; 
    private CommClient comm; 


    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     eList = new ELFList(); 
     comm = new CommClient( getIntent().getExtras().getString("ip"), 
           getIntent().getExtras().getInt("port")); 
     comm.setListener(this); 
     new Thread(comm).start(); 
    } 

    public void receiveMessage(String IP, String message, int id) { 
     if(message.equals("Connection established")) { 
      comm.send("list"); 
     } 
     if(message.charAt(0)=='#') { 
      String[] strArr = toStringarr(message); 
      eList.add(strArr); 
      listItems(); 
     } 
    } 

    public String[] toStringarr(String str) { 
     String substr = str.substring(1); 
     return substr.split("@"); 
    } 

    public void listItems() { 
     userRooms = eList.returnNames(); 

     setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, userRooms)); 
     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       Entry e = eList.getEntry(position); 
       String roominfo = e.toString(); 

       Intent intent = new Intent(RoomListActivity.this, RoomInfoActivity.class); 
       intent.putExtra("entry",roominfo); 
       intent.putExtra("ip", getIntent().getExtras().getString("ip")); 
       intent.putExtra("port", getIntent().getExtras().getInt("port")); 
       comm.disconnect(); 
       RoomListActivity.this.startActivity(intent); 
      } 
     }); 
    } 

} 
+0

好的,现在将代码添加到问题中,虽然我不知道如何格式化(我检查了常见问题,但由于某种原因它不起作用。)。 另外,pastebin是粘贴更大的文本片段的一种可接受的方式,所以我建议分割代码和链接那样..但我明白了你的观点..我将在下次直接发布代码.. – 2011-05-23 12:56:00

回答

1

你忘了为您的ActivityonCreate()内容视图包含了Activity布局。所以没有可以显示任何东西的列表。在布局XML文件中定义布局,并使用setContentView()将其设置为内容视图。

+0

我扩展了ListActivity所以我不必,除非我忽略了一些东西。 – 2011-05-23 13:23:22

+0

噢,你说得对。我从来没有阅读它的文档,因为我总是使用它自定义布局。您是否在将它传递到适配器之前检查了userRooms变量是否包含项目? – Flo 2011-05-23 13:33:45

+0

是的,我已经检查过,userRooms没有任何问题。 – 2011-05-23 13:41:45

相关问题