初始化时你的listMsg没有传到MsgAdapter 里面
listview无法显示,求大神解决
适配器
class MsgAdapter extends BaseAdapter {
private List<Msg> listMsg = new ArrayList<Msg>();
private Context cxt;
private LayoutInflater inflater;
public MsgAdapter(ChatActivity ChatActivity) {
this.cxt = ChatActivity;
}
@Override
public int getCount() {
return listMsg.size();
}
@Override
public Object getItem(int position) {
return listMsg.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(listMsg.get(position).from.equals("IN")){
this.inflater = (LayoutInflater) this.cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = this.inflater.inflate(R.layout.msg_left, null);
}else{
convertView = this.inflater.inflate(R.layout.msg_right, null);
}
TextView useridView = (TextView) convertView.findViewById(R.id.userid);
TextView dateView = (TextView) convertView.findViewById(R.id.date);
TextView msgView = (TextView) convertView.findViewById(R.id.msg);
useridView.setText(listMsg.get(position).userid);
dateView.setText(listMsg.get(position).date);
msgView.setText(listMsg.get(position).msg);
return convertView;
}
}
消息类
public class Msg {
String userid;
String msg;
String date;
String from;
public Msg(String userid, String msg, String date, String from) {
this.userid = userid;
this.msg = msg;
this.date = date;
this.from = from;
}
}
主程序
public class ChatActivity extends Activity{
private ListView msgListView;
private EditText inputText;
private MsgAdapter adapter;
private Button send;
private List<Msg> listMsg=new ArrayList<Msg>();
private String pUSERID="用户";
String strFirendName = "医生";
String user = "test1";
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.chat);
//initMsgs();
inputText=(EditText)findViewById(R.id.chat_edit);
send=(Button)findViewById(R.id.send);
adapter = new MsgAdapter(this);
msgListView=(ListView)findViewById(R.id.listview);
msgListView.setAdapter(adapter);
ChatManager cm = connect.getConnection().getChatManager();
cm.addChatListener(new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean able) {
chat.addMessageListener(new MessageListener() {
@Override
public void processMessage(Chat chat2, Message message) {
//message from user [test2@hp-pc]
String[] args = new String[] {strFirendName , message.getBody(), TimeRender.getDate(), "IN" };
android.os.Message msg = handler.obtainMessage();
msg.obj = args;
msg.sendToTarget();
System.out.println(message.getBody());
// orther user / group / admin of the openfire
// do work...
}
});
}
});
//发送
final Chat newchat = cm.createChat( user + "@hp-pc", null);
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String msg = inputText.getText().toString();
if(msg.length() > 0){
listMsg.add(new Msg(pUSERID, msg, TimeRender.getDate(), "OUT"));
Log.e("ChatActivity","addmsg");
adapter.notifyDataSetChanged();
Log.e("ChatActivity","change");
try {
newchat.sendMessage(msg);
} catch (XMPPException e) {
e.printStackTrace();
}
}
inputText.setText("");
}
});
}
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
String[] args = (String[]) msg.obj;
listMsg.add(new Msg(args[0], args[1], args[2], args[3]));
//动态刷新
adapter.notifyDataSetChanged();
}
};
};
是一个聊天界面的listview,测试的时候用spark收得到消息,但是自己的界面就收发都不显示,不知道为什么,网上查了也不知道问题
- 点赞
- 写回答
- 关注问题
- 收藏
- 复制链接分享
- 邀请回答
5条回答
为你推荐
- listview无法显示,求大神解决
- list
- 5个回答
- Android 客户端 TextView表格分页显示数据
- 2个回答
- Android直接连接mysql,并将数据用listview显示出来,代码一直有问题,求大神解决
- 2个回答
- wpf点击treeviewitem节点显示文件,但点击调用Process.Start方法抛出异常
- 关于安卓SQLiteOpenHelper.getDatabaseLocke的问题
- 3个回答
- ListView使用XUtils图片闪烁
- Android 两个activity之间跳转不刷新怎么实现
- android
- 3个回答
- 关于listvi中加入viewpager 求大神看下代码
- ScrollView嵌套ListView,ListView下方有很过空白
- list
- 1个回答
- ListView显示异常, 图片错位
- 1个回答