Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/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 根据sqlite结果区分listview中的行_Android_Sqlite_Listview_Load_Populate - Fatal编程技术网

Android 根据sqlite结果区分listview中的行

Android 根据sqlite结果区分listview中的行,android,sqlite,listview,load,populate,Android,Sqlite,Listview,Load,Populate,在我的项目中,我需要从webservice获取消息并在listview中查看。我需要在listview中区分已读消息和未读消息。我检索了消息并将其存储在sqlite数据库中。如何区分已读消息和未读消息。而且listview没有正确填充。它显示的不是文本,而是文本视图某一行中的ID 这是我的密码 public class Message_Adapter extends ArrayAdapter<Message> implements OnClickListener {

在我的项目中,我需要从webservice获取消息并在listview中查看。我需要在listview中区分已读消息和未读消息。我检索了消息并将其存储在sqlite数据库中。如何区分已读消息和未读消息。而且listview没有正确填充。它显示的不是文本,而是文本视图某一行中的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());


            holder.delete.setOnClickListener(new OnClickListener() {

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

                // show a message while loader is loading

                AlertDialog.Builder adb = new AlertDialog.Builder(activity);
                adb.setTitle("Delete?");
                adb.setMessage("Are you sure you want to delete ");
                //final int user_id = Integer.parseInt(v.getTag().toString());
                adb.setNegativeButton("Cancel", null);
                adb.setPositiveButton("Ok",
                    new AlertDialog.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,
                        int which) {
                        // MyDataObject.remove(positionToRemove);
                        DatabaseHandler dBHandler = new DatabaseHandler(
                            activity.getApplicationContext());
                        dBHandler.Delete_Contact(smsm);
                       InboxActivity.this.onResume();

                    }
                    });
                adb.show();
            }

            });
            row.setOnClickListener(new OnItemClickListener(position));

            return row;

        }
公共类消息\u适配器扩展ArrayAdapter实现OnClickListener{
活动;
国际布局资源;
消息用户;
ArrayList数据=新的ArrayList();
公共消息适配器(活动行为,内部布局资源ID,
列表数据){
超级(act、布局资源、数据);
this.layoutResourceId=layoutResourceId;
这个活动=行动;
this.data=(ArrayList)数据;
notifyDataSetChanged();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
UserHolder=null;
if(行==null){
LayoutFlater充气机=LayoutFlater.from(活动);
行=充气机。充气(layoutResourceId,父级,false);
holder=新用户holder();
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=(按钮)row.findViewById(R.id.btn_delete);
holder.status=(TextView)row.findViewById(R.id.staty);
row.setTag(支架);
}否则{
holder=(UserHolder)row.getTag();
}
user=data.get(位置);
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());
holder.delete.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(最终视图v){
//TODO自动生成的方法存根
//加载程序加载时显示消息
AlertDialog.Builder adb=新建AlertDialog.Builder(活动);
adb.setTitle(“删除?”);
adb.setMessage(“您确定要删除吗”);
//final int user_id=Integer.parseInt(v.getTag().toString());
adb.setNegativeButton(“取消”,空);
adb.setPositiveButton(“确定”,
新建AlertDialog.OnClickListener(){
@凌驾
公共void onClick(对话框接口对话框,
int(其中){
//MyDataObject.remove(位置删除);
DatabaseHandler dBHandler=新的DatabaseHandler(
activity.getApplicationContext());
dBHandler.Delete_Contact(smsm);
InboxActivity.this.onResume();
}
});
adb.show();
}
});
row.setOnClickListener(新的McClickListener(位置));
返回行;
}
这是我的收件箱自定义布局

  <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="100sp"
android:background="@drawable/edittext"
android:orientation="vertical" >
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/fromno"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/tonum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/msgbody"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/msgdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" />
     <TextView
        android:id="@+id/staty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:orientation="horizontal" >
    </LinearLayout>

</LinearLayout>
</LinearLayout>

@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
UserHolder=null;
if(行==null){

LayoutFlater充气机=LayoutFlater.from(活动);您使用数据库中的哪个变量来区分已读邮件和未读邮件?您能展示一张您在错误人群中看到的图片吗?我有一个名为Status的列。对于值为0的行必须与值为1的行不同…@Lena Bru,我无法上载屏幕截图…而不是加载textview details它加载那些textviews的资源ID textpost layoutResourceId的xml,您将行膨胀到该xml,以便我查看资源的原因ids@Lenabru!!我已经粘贴了我的自定义行布局
  @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            UserHolder holder = null;

        if (row == null) {
        LayoutInflater inflater = LayoutInflater.from(activity); <== move this line to the constructor of the adapter,and use it as a member

        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());


        holder.delete.setOnClickListener(new OnClickListener() {

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

            // show a message while loader is loading

            AlertDialog.Builder adb = new AlertDialog.Builder(activity);
            adb.setTitle("Delete?");
            adb.setMessage("Are you sure you want to delete ");
            //final int user_id = Integer.parseInt(v.getTag().toString());
            adb.setNegativeButton("Cancel", null);
            adb.setPositiveButton("Ok",
                new AlertDialog.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog,
                    int which) {
                    // MyDataObject.remove(positionToRemove);
                    DatabaseHandler dBHandler = new DatabaseHandler(
                        activity.getApplicationContext());
                    dBHandler.Delete_Contact(smsm);
                   InboxActivity.this.onResume();

                }
                });
            adb.show();
        }

        });
        row.setOnClickListener(new OnItemClickListener(position));// do not put onItemClickListener here, it is supposed to go into the activity or fragment whereever your listview object resides, give it "listView.setOnItemClickListener()", it will be noticable in performance when your listview has a lot of rows, that their click listeners get restarted every time you scroll or refresh the list



            if(Status == 0){
    //message is unread
    }else {
      // message is read
} // this status will change whenever you call notifyDataSetChanged on the adapter, because it will refresh all the rows in view


        return row;

    }