Android ListView第二次无法正确填充

Android ListView第二次无法正确填充,android,android-listview,textview,android-sqlite,Android,Android Listview,Textview,Android Sqlite,我已经实现了从sqlite数据库填充sms的自定义列表视图。所有行都填充到自定义列表视图中。当我单击列表行时,它将导航到该sms的详细视图,其中我传递的是该行的消息id。它将从sqlite数据库中获取该消息id对应的详细信息。当我再次返回列表视图时,选中的行已更改为消息内容的各个文本视图的资源id 这是我试过的代码 public class Message_Adapter extends ArrayAdapter<Message> implements OnClickListene

我已经实现了从sqlite数据库填充sms的自定义列表视图。所有行都填充到自定义列表视图中。当我单击列表行时,它将导航到该sms的详细视图,其中我传递的是该行的消息id。它将从sqlite数据库中获取该消息id对应的详细信息。当我再次返回列表视图时,选中的行已更改为消息内容的各个文本视图的资源id

这是我试过的代码

 public class Message_Adapter extends ArrayAdapter<Message> implements OnClickListener {
        Activity activity;
        int layoutResourceId;
        Message user;
        ArrayList<Message> data = new ArrayList<Message>();

        public Message_Adapter(Activity act, int layoutResourceId,
            List<Message> data) {
            super(act, layoutResourceId, data);
            this.layoutResourceId = layoutResourceId;
            this.activity = act;
            this.data = (ArrayList<Message>) data;
            notifyDataSetChanged();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            UserHolder holder = null;

            if (row == null) {
            LayoutInflater inflater = LayoutInflater.from(activity);

            row = inflater.inflate(layoutResourceId, parent, false);
            holder = new UserHolder();
            holder.fromnum = (TextView) row.findViewById(R.id.fromno);
            holder.tonum = (TextView) row.findViewById(R.id.tonum);
            holder.body= (TextView) row.findViewById(R.id.msgbody);
            holder.date = (TextView) row.findViewById(R.id.msgdate);
            //holder.delete = (Button) row.findViewById(R.id.btn_delete);
            holder.status = (TextView) row.findViewById(R.id.staty);
            row.setTag(holder);
            } else {
            holder = (UserHolder) row.getTag();
            }
            user = data.get(position);
            smsm=user.getID();
            System.out.println("Smsm::::"+smsm);
           // holder.delete.setTag(user.getID());
            holder.fromnum.setText(user.getmsgfrom());
            holder.tonum.setText(user.getto());
            holder.body.setText(user.getmsg());
            holder.date.setText(user.getdate());
            holder.status.setText(user.getstatus());



            row.setOnClickListener(new OnItemClickListener(position));

            return row;

        }

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

        }

         private class OnItemClickListener  implements OnClickListener{           
             private int mPosition;

             OnItemClickListener(int position){
                  mPosition = position;
             }

             @Override
             public void onClick(View arg0) {


              InboxActivity sct = (InboxActivity)activity;


                 sct.onItemClick(mPosition);
             }      

你又给适配器打电话了吗listview@Amsheer是的,我称之为oncreate方法,我想这是因为回收。请参阅本文件