GVKun编程网logo

[android] 手机卫士黑名单功能(ListView结合SQLite增删改)

11

在本文中,我们将为您详细介绍[android]手机卫士黑名单功能的相关知识,并且为您解答关于ListView结合SQLite增删改的疑问,此外,我们还会提供一些关于AndroidArrayListLi

在本文中,我们将为您详细介绍[android] 手机卫士黑名单功能的相关知识,并且为您解答关于ListView结合SQLite增删改的疑问,此外,我们还会提供一些关于Android ArrayList ListView / Textview-您必须为textview提供资源ID、Android ExpandableListView和SQLite数据库、android listview item点击时更改textview的颜色 代码中实现、Android ListView 扩展 DragSortListView的有用信息。

本文目录一览:

[android] 手机卫士黑名单功能(ListView结合SQLite增删改)

[android] 手机卫士黑名单功能(ListView结合SQLite增删改)

修改界面,在顶部横条上增加一个添加按钮,点击打开一个自定义对话框,输入电话号码和拦截模式保存到数据库

自定义对话框看这篇http://www.cnblogs.com/taoshihan/p/5370378.html

 

添加记录

调用Builder对象的show()方法,获取AlertDialog对象

调用View.inflate()方法,将布局文件转成View对象

调用View对象的findViewById()方法,获取确认和取消的Button对象

调用Button对象的setonClickListener()方法,设置点击事件,匿名内部类实现OnClickListener接口,重写onClick()方法

调用AlertDialog对象的dismiss()方法,可以关闭对话框

调用View对象的findViewById()方法,获取到各个控件的值,进行判断处理

调用之前定义好的DaoBlackNumberAdo对象的add()方法,数据库增加一条记录,参数:String电话号码,String拦截模式

此时ListView并不会显出出来刚添加的记录,需要退出这个Activity重写进入,我们通知适配器数据更新

调用集合List对象的add()方法,添加一条数据,参数:0(第一个),数据

调用listadapter对象的notifyDataSetChanged()方法,通知数据更新

 

删除记录

条目布局文件中,在右侧放置一个垃圾桶的小图标,上下居中,父控件右边

 

安卓系统的点击事件和js的点击事件很相似,

参考这篇:http://www.cnblogs.com/taoshihan/p/5438729.html

 

获取到删除按钮Button对象

调用Button对象,设置点击事件

获取AlertDialog.Builder对象,展示是否确认删除的对话框

调用AlertDialog.Builder对象,设置确认按钮和取消按钮,注意设置点击事件OnClickListener时,它所在的包是DialogInterface.OnClickListener

调用之前定义好的DaoBlackNumberAdo对象的delete()方法,参数:String电话号码

调用集合List对象的remove()方法,删除一条数据,参数:int索引

调用listadapter对象的notifyDataSetChanged()方法,通知数据更新

CallSmsSafeActivity.java

package com.qingguow.mobilesafe;

import java.util.HashMap;
 java.util.List;
 java.util.Map;

 android.app.Activity;
 android.app.AlertDialog;
 android.app.AlertDialog.Builder;
 android.content.DialogInterface;
 android.os.Bundle;
 android.text.TextUtils;
 android.view.View;
 android.view.View.OnClickListener;
 android.view.ViewGroup;
 android.widget.BaseAdapter;
 android.widget.Button;
 android.widget.CheckBox;
 android.widget.EditText;
 android.widget.ImageView;
 android.widget.ListView;
 android.widget.TextView;
 android.widget.Toast;

 com.qingguow.mobilesafe.db.ado.BlackNumberAdo;

/**
 * 通讯卫士
 * 
 * @author taoshihan
 * 
 */
public class CallSmsSafeActivity extends Activity {
    private ListView listview;
    private List<Map<String,String>> infos;
     BlackNumberAdo dao;
     MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_call_sms_safe);
        listview = (ListView) findViewById(R.id.lv_blacknumber);
        myAdapter=new MyAdapter();

        dao = new BlackNumberAdo(this);
        infos = dao.findAll();
        listview.setAdapter(myAdapter);
        // //添加100条测试数据
         Random random=new Random();
         for(int i=1;i<=100;i++){
         ado.add("18805419000"+i,String.valueOf(random.nextInt(3)+1));
         }
        
    }
    class ViewHolder{
        public TextView phoneView;
         TextView modeView;
         ImageView iv_delete;
    }
    private class MyAdapter  BaseAdapter {

        @Override
        int getCount() {
             Todo Auto-generated method stub
            return infos.size();
        }

        @Override
        public View getView(final  position,View convertView,ViewGroup parent) {
            View view;
            ViewHolder holder= ViewHolder();
            if(convertView==null){
                view = View.inflate(CallSmsSafeActivity.,R.layout.list_call_sms_safe_item,);
                holder.phoneView=(TextView) view
                        .findViewById(R.id.tv_main_phone);
                holder.modeView=(TextView) view
                        .findViewById(R.id.tv_block_mode);
                holder.iv_delete=(ImageView) view.findViewById(R.id.iv_delete);
                view.setTag(holder);
                System.out.println("创建新的View对象"+position);
            }else{
                view=convertView;
                holder=(ViewHolder) view.getTag();
                System.out.println("使用历史View对象"+position);
            }
            
            
            holder.phoneView.setText(infos.get(position).get("phone"));
            switch (infos.get(position).get("mode")) {
            case "1":
                holder.modeView.setText("电话拦截");
                break;
            case "2":
                holder.modeView.setText("短信拦截"case "3":
                holder.modeView.setText("全部拦截"default:
                ;
            }
            删除条目
            holder.iv_delete.setonClickListener( OnClickListener() {
                
                @Override
                 onClick(View v) {
                    AlertDialog.Builder builder=new AlertDialog.Builder(CallSmsSafeActivity.);
                    builder.setTitle("警告");
                    builder.setMessage("是否确认删除?");
                    builder.setPositiveButton("确认", DialogInterface.OnClickListener() {
                        
                        @Override
                        void onClick(DialogInterface dialog,1)"> which) {
                            infos.remove(position);
                            myAdapter.notifyDataSetChanged();
                            dao.delete(infos.get(position).get("phone"));
                        }
                    });
                    builder.setNegativeButton("取消",1)">);
                    builder.show();
                }
            });
             view;
        }

        @Override
        public Object getItem( position) {
            return ;
        }

        @Override
        long getItemId(return 0;
        }

    }
     EditText blackNumber;
     CheckBox blockCall;
     CheckBox blockSms;
    
     * 添加黑名单
     * @param v
     */
     addCallSmsSafe(View v) {
        AlertDialog.Builder builder=new AlertDialog.Builder();
        View view=View.inflate(this,R.layout.dialog_add_safe_sms,1)">);
        builder.setView(view);
        final AlertDialog alertDialog=builder.show();
        Button submit=(Button) view.findViewById(R.id.bt_submit);
        Button cancel=(Button) view.findViewById(R.id.bt_cancel);
        blackNumber=(EditText) view.findViewById(R.id.et_black_number);
        blockCall=(CheckBox) view.findViewById(R.id.cb_block_call);
        blockSms=(CheckBox) view.findViewById(R.id.cb_block_sms);
        
        submit.setonClickListener( OnClickListener() {
            @Override
             onClick(View v) {
                String phone=blackNumber.getText().toString().trim();
                String mode = "3";
                if(TextUtils.isEmpty(phone)){
                    Toast.makeText(CallSmsSafeActivity.).show();
                }
                if(blockCall.isChecked()&&blockSms.isChecked()){
                    全部拦截
                    mode="3";
                }else (blockCall.isChecked()){
                    电话拦截
                    mode="1"(blockSms.isChecked()){
                    短信拦截
                    mode="2"{
                    Toast.makeText(CallSmsSafeActivity.).show();
                }
                dao.add(phone,mode);
                Map<String,String> info=new HashMap<String,String>();
                info.put("phone"dismiss();
            }
        });
        cancel.setonClickListener( onClick(View v) {
                alertDialog.dismiss();
            }
        });
    }
}

 

Android ArrayList ListView / Textview-您必须为textview提供资源ID

Android ArrayList ListView / Textview-您必须为textview提供资源ID

我曾经在某一时刻进行过这项工作,所以我认为我所引用的东西有误。_regionListView似乎返回确定。我认为ArrayList中的数组是问题,因为它包含额外的空索引,但我认为我没有正确连接到ListView和TextView。

任何帮助,将不胜感激。

Main.java

String _region = inRegion;
    ParserRegion _parserRegion = new ParserRegion();
    InputStream _inputStream = getResources().openRawResource(R.raw.regions);

    // Parse the Input Stream
    _parserRegion.Parse(_inputStream,_region);

    // Get Regions
    List<PropertiesRegion> _regionList = _parserRegion.GetList();

    // Create the ArrayAdapter
    ArrayAdapterRegion _arrayAdapter = new ArrayAdapterRegion(getApplicationContext(),R.layout.search_list,_regionList);

    // Get reference to ListView holder
    ListView _regionListView = (ListView) this.findViewById(R.id.regionListView);

    // Set the ListView adapter
    _regionListView.setAdapter(_arrayAdapter);

Search.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:adjustViewBounds="true"
    android:background="@drawable/search_background"
    android:gravity="center"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:scaleType="centerCrop" >

    <TextView
        android:id="@+id/selectRegionTextView"
        android:cacheColorHint="#00000000"
        android:layout_width="wrap_content"
        android:layout_height="30dp" 
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:layout_marginTop="150dip"
        android:gravity="top"
        android:textColor="#000000"
        android:textSize="20dip"
        android:textandroid:typeface="sans" />

    <ListView 
        android:id="@+android:id/regionListView"
        android:cacheColorHint="#00000000" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginBottom="5dip"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:padding="10dp" />

    <Button
        android:id="@+id/mainMenuButton"
        android:background="@drawable/button_black"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="70dip"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
            android:typeface="sans"
            android:textSize="18dip"
            android:textandroid:textColor="@android:color/white"/>

</LinearLayout>

Search_list.xml

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

    <TextView
        android:id="@+id/regionTextView"
        android:cacheColorHint="#00000000"
        android:gravity="center"
        android:layout_gravity="left"
        android:layout_width="wrap_content"
        android:layout_height="60dp" 
        android:paddingLeft="10dip"
        android:textColor="#000000"
        android:typeface="sans"
        android:textSize="20dip"
        android:text/>

</LinearLayout>

Android ExpandableListView和SQLite数据库

Android ExpandableListView和SQLite数据库

我的数据库中有两个表 – 房间和设备.每个房间都有很多设备.我想制作一个可扩展的列表视图,其中房间名称为组,设备名称和状态为子项(打开或关闭).

任何人都可以给我一个简单的想法,因为我是Android的新手,所有教程都很难

这是我的数据库:

public void onCreate(sqliteDatabase db) {
        db.execsql("create table if not exists rooms (
                                    id_room integer primary key autoincrement,"
                + "name_room text not null" 
                + ");");    
        db.execsql("create table if not exists devices (
                                    id_device integer primary key autoincrement,"
                + "name_device text not null," 
                + "state_device text not null,"
                + "id_room references rooms"
                + ");");
    }

解决方法

以下是一个非常简单,没有多余的可扩展列表实现.

db helper类中需要两个方法来收集所需的游标.

public Cursor fetchGroup() {
    String query = "SELECT * FROM rooms"
    return mDb.rawQuery(query,null);
}

public Cursor fetchChildren(String room) {
    String query = "SELECT * FROM devices WHERE id_room = '" + room + "'";
    return mDb.rawQuery(query,null);
}

然后你需要设置你的适配器(在你的活动中):

public class Myexpandablelistadapter extends SimpleCursorTreeAdapter {
    public Myexpandablelistadapter(Cursor cursor,Context context,int groupLayout,int childLayout,String[] groupFrom,int[] groupTo,String[] childrenFrom,int[] childrenTo) {
            super(context,cursor,groupLayout,groupFrom,groupTo,childLayout,childrenFrom,childrenTo);
        }
    }

    @Override
    protected Cursor getChildrenCursor(Cursor groupCursor) {
        Cursor childCursor = mDbHelper.fetchChildren(groupCursor.getString(groupCursor.getColumnIndex("id_room"));            
        getActivity().startManagingCursor(childCursor);
        childCursor.movetoFirst();
        return childCursor;
    }
}

最后调用适配器并将其设置到列表中(在您的活动中):

private void fillData() {
    mGroupsCursor = mDbHelper.fetchGroup();
    getActivity().startManagingCursor(mGroupsCursor);
    mGroupsCursor.movetoFirst();

    ExpandableListView elv = (ExpandableListView) getActivity().findViewById(android.R.id.list);

    mAdapter = new Myexpandablelistadapter(mGroupsCursor,getActivity(),R.layout.rowlayout_expgroup,// Your row layout for a group
        R.layout.rowlayout_itemlist_exp,// Your row layout for a child
        new String[] { "id_room" },// Field(s) to use from group cursor
        new int[] { android.R.id.room },// Widget ids to put group data into
        new String[] { "name_device","state_device" },// Field(s) to use from child cursors
        new int[] { R.id.device,R.id.state });          // Widget ids to put child data into

        lv.setAdapter(mAdapter);                         // set the list adapter.
    }
}

希望这可以帮助!

编辑

它应该像这样聚集在一起:

public class List_Exp extends Activity {
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mDbHelper = new YourDB(getActivity());
        mDbHelper.open();
        fillData();
    }

    private void fillData() { 
        // set list adapter here
    }

    public class Myexpandablelistadapter extends SimpleCursorTreeAdapter {
        // Your adapter
    }
}

编辑2

要捕获点击次数,请在您的活动中设置侦听器:

lv.setonChildClickListener(new ExpandableListView.OnChildClickListener() {
    @Override
    public boolean onChildClick(ExpandableListView parent,View v,int groupPosition,int childPosition,long id) {
        // Your child click code here
        return true;
    }
});

lv.setonGroupClickListener(new ExpandableListView.OnGroupClickListener() {
    @Override
    public boolean onGroupClick(ExpandableListView parent,long id) {
        // Your group click code here
        return true;
    }
});

android listview item点击时更改textview的颜色 代码中实现

android listview item点击时更改textview的颜色 代码中实现

listview点击时更改textview文字颜色很多网上的资料都已经介绍,本人也在实际中xml文件中已实现。

但是将xml文件中设置的textcolor放到代码就确不起作用了,目前仍未找到原因,希望知道原因的大神指点下。

不过经过一天的努力还是找到了解决办法,就是自定义按钮文字变色类

ColorStateList

代码:

new ColorStateList(
                new int[][]{
                        new int[]{android.R.attr.state_pressed}, //1
                        new int[]{-android.R.attr.state_focused}, //2
                        new int[]{android.R.attr.state_selected, android.R.attr.state_pressed} //3
                },
                new int[] {
                    Color.GREEN, //1
                    Color.WHITE, //2
                    Color.BLUE //3
                }
            );


然后设置 .setTextColor(myColorStateList);就可以了


Android ListView 扩展 DragSortListView

Android ListView 扩展 DragSortListView

DragSortListView(DSLV)是 Android ListView 的一个扩展,支持拖拽排序和左右滑动删除功能。重写了 TouchInterceptor(TI)类来提供更加优美的拖拽动画效果。

DSLV 主要特性:

  • 完美的拖拽支持;

  • 在拖动时提供更平滑的滚动列表滚动;

  • 支持每个 ListItem 高度的多样性

  • 公开 startDrag () 和 stopDrag () 方法;

  • 有公开的接口可以自定义拖动的 View。

DragSortListView 适用于带有任何优先级的列表:收藏夹、播放列表及清单等,算得上是目前 Android 开源实现拖动排序操作最完美的方案。

(简介来自:http://www.csdn.net/article/2013-05-06/2815145-Android-open-source-projects-two)

更多 http://www.oschina.net/code/snippet_219356_18991

关于[android] 手机卫士黑名单功能ListView结合SQLite增删改的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android ArrayList ListView / Textview-您必须为textview提供资源ID、Android ExpandableListView和SQLite数据库、android listview item点击时更改textview的颜色 代码中实现、Android ListView 扩展 DragSortListView等相关知识的信息别忘了在本站进行查找喔。

本文标签: