android ListView Adapter不显示

//activity
package wk.bluetooth;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.*;
import android.widget.AdapterView.OnItemClickListener;
import android.view.View.OnClickListener;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import wk.bluetooth.StartServer.ChatListItem;

public class StartClient extends Activity implements OnItemClickListener ,OnClickListener{

private ListView mListView;
ChatAdapter mAdapter;
private ArrayList<ChatListItem> list;

private EditText sendMessage;
private Button sendButton;
private TextView title;
private ImageButton back;

private String joinChatRoomName;
private String address;
private String nowTime;

private BluetoothSocket socket;
private BluetoothDevice device = null;
private clientThread startClient = null;
private readThread mreadThread = null;
private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();



Context mContext;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.chat);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar);
    Bundle bundle = this.getIntent().getExtras();
    joinChatRoomName = bundle.getString("joinChatRoomName");
    address = bundle.getString("address");

    mContext = this;
    init();
}
private  void init(){
    device = mBluetoothAdapter.getRemoteDevice(address);

    list = new ArrayList<ChatListItem>();
    mAdapter = new ChatAdapter(mContext, list);
    mListView = (ListView) findViewById(R.id.chat_list);
    mListView.setAdapter(mAdapter);
    //mListView.setOnItemClickListener(this);
    mListView.setFastScrollEnabled(true);

    title = (TextView) findViewById(R.id.title);
    title.setText(joinChatRoomName);


    back = (ImageButton) findViewById(R.id.back);
    back.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            if(mreadThread!=null){
                mreadThread.interrupt();
            }
            if(startClient != null){
                startClient.interrupt();
            }
            list.clear();
            StartClient.this.finish();
        }
    });


    sendMessage = (EditText)findViewById(R.id.MessageText);
    sendButton = (Button)findViewById(R.id.btn_msg_send);
    sendButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            String msg= sendMessage.getText().toString();
            if(msg.length()>0){
                SendMessageHandle(msg);
                sendMessage.setText("");
                sendMessage.clearFocus();
                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(sendMessage.getWindowToken(), 0);

            }else{
                Toast.makeText(mContext, "消息发送失败", Toast.LENGTH_SHORT).show();
                sendMessage.setText("");
                sendMessage.clearFocus();
            }

        }
    });
    if(Bluetooth.joinChatRoom.get(address)) {
        Log.d("StartClient","join again");
        mreadThread = new readThread();
        mreadThread.start();

    }else{
        Log.d("StartClient","first time join");
        startClient = new clientThread();
        startClient.start();
    }


}

private class clientThread extends Thread {
    @Override
    public void run() {
        try {

            Message msg2 = new Message();
            msg2.obj = "正在加入"+device.getName()+"的聊天室";
            msg2.what = 2;
            LinkDetectedHandler.sendMessage(msg2);
            //创建一个Socket连接:只需要服务器在注册时的UUID号
            socket = Bluetooth.joinChatRoomSocket.get(address);
            //连接
            socket.connect();
            Bluetooth.joinChatRoomSocket.put(address,socket);
            Bluetooth.joinChatRoom.put(address,true);


           // new IsNotConnected().start();

            //启动接受数据
            mreadThread = new readThread();
            mreadThread.start();
        }
        catch (IOException e)
        {
            Bluetooth.joinChatRoom.put(address,false);
            Message msg = new Message();
            msg.obj = "加入聊天室失败,请断开重试";
            msg.what = 2;
            LinkDetectedHandler.sendMessage(msg);
        }

    }
}

//读取数据
private class readThread extends Thread {
@Override
public void run() {
Log.d("StartClient","read buffer");
byte[] buffer = new byte[1024];
int bytes;
InputStream mmInStream = null;

        try {
            mmInStream = Bluetooth.joinChatRoomSocket.get(address).getInputStream();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        while (true) {
            try {
                // Read from the InputStream
                if ((bytes = mmInStream.read(buffer)) > 0) {
                    byte[] buf_data = new byte[bytes];
                    for (int i = 0; i < bytes; i++) {
                        buf_data[i] = buffer[i];
                    }

                    String s = new String(buf_data);
                    Log.d("ReceiveMessage",s+"-------");
                    if(s.equals("MARLBORO")){
                        continue;
                    }

                    Message message = new Message();
                    message.obj = s;
                    message.what = 1;
                    LinkDetectedHandler.sendMessage(message);
                }
            } catch (IOException e) {
                try {
                    mmInStream.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                break;
            }

        }
    }
}

private Handler LinkDetectedHandler = new Handler() {
    //what = 0发送的消息
    //what = 1接受的消息
    //what = 2公共消息
    @Override
    public void handleMessage(Message msg) {
        Log.d("ReceiveMessage", msg.obj + "   " + msg.what);
        SimpleDateFormat formatter = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
        nowTime = formatter.format(new Date(System.currentTimeMillis()));

        list.add(new ChatListItem((String) msg.obj, nowTime, msg.what));

        Log.d("ReceiveMessage","list size"+list.size());

        Log.d("ReceiveMessage","adddddddddddd");
        mAdapter.notifyDataSetChanged();
        mListView.setSelection(list.size() - 1);


    }

};

private void SendMessageHandle(String msg){
    Log.d("StartClient","send message"+msg);
    try {
        OutputStream outputStream = Bluetooth.joinChatRoomSocket.get(address).getOutputStream();
        outputStream.write(msg.getBytes());
    } catch (Exception e) {}
    Message m = new Message();
    m.obj = msg;
    m.what = 0;
    LinkDetectedHandler.sendMessage(m);
}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
}
@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
}

public class joinChatListItem {
    String message;
    Integer flag;

    public joinChatListItem(String msg, Integer f) {
        message = msg;
        flag = f;
    }
}

}

//adapter
package wk.bluetooth;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import wk.bluetooth.StartServer.ChatListItem;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

/**

  • Created by wk on 2015/5/4.
    */
    public class ChatAdapter extends BaseAdapter {
    private ArrayList list;
    private LayoutInflater mInflater;

    public ChatAdapter(Context context, ArrayList l) {
    list = l;
    mInflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
    return list.size();
    }

    @Override
    public Object getItem(int position) {
    return list.get(position);
    }

    @Override
    public long getItemId(int position) {
    return position;
    }

    @Override
    public int getItemViewType(int position) {
    return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder = null;
    int[] textView ={R.id.send_text,R.id.receive_text,R.id.receive_text};
    int[] imageView = {R.id.send_head_image,R.id.receive_head_image, R.id.receive_head_image};
    int[] layout = {R.layout.send_message,R.layout.receive_message, R.layout.receive_message};
    Log.d("ChatAdapter","hhhhhhhhhhhhhhhhhhhh");
    ChatListItem item=list.get(position);
    Log.d("ChatAdapter","item.flag "+item.flag+"item.mes "+item.message);
    // if(convertView == null){
    Log.d("ChatAdapter","--"+item.message+" -- "+ item.flag);
    convertView = mInflater.inflate(layout[item.flag], null);
    viewHolder=new ViewHolder(
    // convertView.findViewById(R.id.list_child),
    (TextView) convertView.findViewById(textView[item.flag])
    , (TextView) convertView.findViewById(R.id.message_time)
    ,(ImageView) convertView.findViewById(imageView[item.flag])
    );
    convertView.setTag(viewHolder);
    //}

    //else{
      //  Log.d("ChatAdapter","nullllllllllll");
       // viewHolder = (ViewHolder)convertView.getTag();
    //}
    if(item.flag==2){
        Log.d("ChatAdapter",item.message+"--"+item.flag);
        viewHolder.time.setText(item.message);
        viewHolder.msg.setVisibility(View.GONE);
        viewHolder.img.setVisibility(View.GONE);
    }else {
        viewHolder.msg.setVisibility(View.VISIBLE);
        viewHolder.img.setVisibility(View.VISIBLE);
        viewHolder.time.setText(item.time);
        viewHolder.msg.setText(item.message);
    }
    return convertView;
    

    }

    class ViewHolder {
    protected TextView msg;
    protected TextView time;
    protected ImageView img;

    public ViewHolder(TextView message, TextView t, ImageView im){
        this.msg = message;
        this.time = t;
        this.img = im;
    
    }
    

    }
    }

我能收到socket发送的消息,但是我多次调用这个activity后 list没有add数据adapter也没有调用日志
运行结果

只要没有点返回之类的按钮,list应该是不断增大了。先跟踪看看list没有增加的原因吧