在本文中,我们将为您详细介绍[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 ArrayList ListView / Textview-您必须为textview提供资源ID
- Android ExpandableListView和SQLite数据库
- android listview item点击时更改textview的颜色 代码中实现
- Android ListView 扩展 DragSortListView
[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()方法,获取到各个控件的值,进行判断处理
调用之前定义好的Dao类BlackNumberAdo对象的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
调用之前定义好的Dao类BlackNumberAdo对象的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
我曾经在某一时刻进行过这项工作,所以我认为我所引用的东西有误。_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的新手,所有教程都很难
这是我的数据库:
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的颜色 代码中实现
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
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等相关知识的信息别忘了在本站进行查找喔。
本文标签: