android上改变listView的选中颜色
ListView选中时默认是黄色,很多时候会和我们软件的配色不符合,那么我就教你如何修改默认的ListView配色,改变ListView选中颜色有两个方法:
1. 在程序中:
- Drawable drawable=getResources().getDrawable(R.drawable.touch_feedback);
- ListView.setSelector(drawable);
2. 在xml里面的ListView标签下添加:
- android:listSelector=”#00000000″
记录和恢复ListView滚动的位置 有时候我们需要记录当前ListView滚动到的位置,重新加载的时候要回到原位,不罗嗦,给出代码:
-
- private OnScrollListener ScrollLis = new OnScrollListener() {
-
- @Override
- public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- if(scrollState==OnScrollListener.SCROLL_STATE_IDLE){
- ListPos=list.getFirstVisiblePosition();
- }
- }
- };
接下来就是还原位置,放在ListView加载之后:
- list.setSelection(ListPos);
关于android ListView的美化 用心的朋友应该会发现,listview中在设置了背景之后。会有些问题。
1.、listview在拖动的时候背景图片消失变成黑色背景。等到拖动完毕我们自己的背景图片才显示出来。
2 、listview的上边和下边有黑色的阴影。
3、lsitview的每一项之间需要设置一个图片做为间隔。
针对以上问题 在listview的xml文件中设置一下语句。
问题1 有如下代码结解决 android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″
问题2 用如下代码解决:android:fadingEdge=”none”
问题3 用如下代码解决: android:divider=”@drawable/list_driver” 其中 @drawable/list_driver 是一个图片资源
ListView拖动时背景黑色的问题 我们知道在Android中ListView是一个比较常用的UI控件,我们在大部分开发中都需要用到它,因此Android为我们提供了ListView的多种实现方法,通过自定义显示布局让显示的内容更加美观,但是我们会发现这样一个问题,当我们操作ListView的时候,如果不使用手机上下按键的时候,直接用触摸拖动视图的方式,会发现ListView的背景一片黑色,而且所有被选中的文字都变成一片漆黑。 其实这个问题发生的原因在于ListView存在缓存颜色机制,因此我们可以通过设定缓存颜色为透明的方法来解决这个问题。ATAAW.COM提供两个解决方法供大家使用,如下所示: A、通过布局属性来设定(ListView的属性中直接定义) android:cacheColorHint=”#00000000″ B、在代码中直接设定 listView.setCacheColorHint(Color.TRANSPARENT); 这样就可以解决黑色出现的问题了。 ListView 中添加按钮,动态删除添加ItemView的操作 要实现添加按钮的操作,必须自定义Adapter,使用Button View的setTag()方法,将Button所属的位置设置到tag当中要实现动态添加删除ItemView的操作,必须首先调整调整Adapter所绑定的数据源,然后调用Adapter的notifyDataSetChanged()方法 以下为实现的一个实例
- package com.jason.joysmsyd;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- import android.app.ListActivity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.Window;
- import android.view.View.OnClickListener;
- import android.widget.BaseAdapter;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
-
- public class SendMain extends ListActivity implements OnClickListener{
-
- Button buttonMessage,buttonContact,buttonHistory;
- EditText textMessage;
-
- List<Map<String,String>> contacts = new ArrayList<Map<String,String>>();
-
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
-
- this.setContentView(R.layout.layout_send);
-
- buttonMessage = (Button) this.findViewById(R.id.ButtonMessage);
- buttonContact = (Button) this.findViewById(R.id.ButtonContact);
- buttonHistory = (Button) this.findViewById(R.id.ButtonHistory);
-
- textMessage = (EditText)this.findViewById(R.id.EditTextMessage);
- textMessage.setText(this.getIntent().getExtras().getString("message"));
-
- }
-
- public void onClick(View v) {
-
- switch(v.getId()){
- case R.id.ButtonMessage:
- this.finish();
- break;
- case R.id.ButtonContact:
- {
- Intent intent = new Intent();
- intent.setAction("com.jason.action.contact");
- this.startActivityForResult(intent, 0);
- }
- break;
- case R.id.ButtonHistory:
- {
- Intent intent = new Intent();
- intent.setAction("com.jason.action.history");
- this.startActivityForResult(intent, 1);
- }
- break;
- }
-
- }
-
-
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == 0 && resultCode == RESULT_OK) {
- this.getcontactFromString(data.getExtras().getString(
- UserSelectActivity.RETURN_LIST));
- bindDataToList();
- }
- }
-
- private void getcontactFromString(String data) {
- if (data == null || data.length() == 0) {
- return;
- }
-
-
- String[] arrayContact = data.split("#");
- for (String singleContact : arrayContact) {
- if (singleContact != null && singleContact.length() > 0) {
- String[] props = singleContact.split(":");
- if (props.length == 2) {
- Map<String,String> contact = new HashMap<String,String>();
- contact.put("name", props[0]);
- contact.put("phone", props[1]);
- contacts.add(contact);
-
- }
- }
-
- }
-
- }
-
- private void bindDataToList(){
- this.setListAdapter(new MyAdapter());
- }
-
- public class MyAdapter extends BaseAdapter{
-
- public int getCount() {
-
- return contacts.size();
- }
-
- public Object getItem(int position) {
-
- return contacts.get(position);
- }
-
- public long getItemId(int position) {
-
- return position;
- }
-
-
- public View getView(int position, View convertView, ViewGroup parent) {
-
- LayoutInflater inflater = SendMain.this.getLayoutInflater();
- final View view = inflater.inflate(R.layout.layout_user_item, null);
- final TextView textPhone = (TextView) view.findViewById(R.id.text1);
- final TextView textName = (TextView) view.findViewById(R.id.text2);
- Button button = (Button)view.findViewById(R.id.buttonDelete);
-
- textPhone.setText(contacts.get(position).get("phone"));
- textName.setText(contacts.get(position).get("name"));
-
- button.setTag( position);
-
- button.setOnClickListener(new OnClickListener(){
-
- public void onClick(View v) {
-
- int position = Integer.parseInt(v.getTag().toString());
- contacts.remove(position);
- MyAdapter.this.notifyDataSetChanged();
-
-
- }});
-
-
-
-
- return view;
- }
-
- }
- }
Android ListView 清单与其Trigger 触发事件 Android ListView 清单与其选择时的触发事件, 可以参考下面的程式范例 :
- public class helloWorld extends Activity {
-
- String[] vData = null;
-
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
-
- vData = new String[]{"足球","棒球","篮球"};
-
-
- ArrayAdapter<String> arrayData = new ArrayAdapter<String>(
- this
- , android.R.layout.simple_list_item_1
- , vData
- );
-
-
- ListView lv = new ListView(this);
-
-
- lv . setAdapter ( arrayData );
-
-
- lv . setOnItemClickListener ( new OnItemClickListener() {
-
- public void onItemClick (AdapterView<?> arg0, View arg1, int arg2,
- long arg3) {
-
- setTitle( getResources().getString(R.string.app_name) + ": " + vData [ arg2 ]);
- }
- });
-
-
- setContentView(lv);
- }
- }
Android中的ListView内容刷新问题 最近在学习Android的listView控件时遇到了一个问题,如何添加一个Item到ListView中并及时的刷新出来。在网上查了很多帖子,很多人在问,也很多人在解答,但是总的来说都没找到详细的解决方案。对于ListView与数据库的同步,高手们建议使用ContentProvider对象。但是如果我不使用数据库呢?也有人回答用notifyDataSetChanged()方法。这倒是一个正确的解决方案,但是对于新手来说,还是比较困惑怎么去用,这里我贴一下我的用法:
- OnClickListener listener2 = new OnClickListener() {
- @Override
- public void onClick(View v) {
-
- Map<String, Object> m = new HashMap<String, Object>();
- String tiString = tv.getText().toString();
- m.put("prod_na", tiString);
- m.put("prod_type", tiString);
-
- coll.add(m);
-
-
- SimpleAdapter sAdapter = (SimpleAdapter)lv.getAdapter();
- sAdapter.notifyDataSetChanged();
- }
- };
这里涉及到了Android中的MVC模式概念,如何存储数据,控制和显示。 你可以认为ListView是一个View,那么mode是什么呢?显然是SimpleAdapter对象,而Control又是什么呢?那只能是notifyDataSetChanged()了。当数据变化时,也就是SimpleAdapter所处理的数据变化了,那么我们就需要调用 notifyDataSetChanged 去通知View作出改变。
分享到:
相关推荐
简单说下这个demo的实现,点击一个button,弹出一个类似spinner的界面,包含一个edittext和listview,当在输入框中键入关键字时,下面的listview所显示的数据可以随之进行筛选,点击...主要用到了TextWatcher这个知识点
1.整体项目采用MVC框架,是对android知识点的综合应用,用到的技术有 (activity,service,broadcast,content provider,Notification , 数据库,自定义title,自定义控件,自定义toast,widget,aidl进程间通讯, javascript和...
主要功能有:①展示定位...用到的知识点: ①BaseAdapter的使用包括BaseAdapter中的getViewTypeCount和getItemViewType方法的使用 ②百度地图定位的使用 ③自定义控件的相关的知识 ④数据库相关的操作 ⑤pinyin4j的用法
具体的可以看一下那篇博文了解一下用到的ViewDragHelper的一些知识点。该界面主要是一个LinearLayout,上面的下拉刷新是一个textview(用TV代替),当然这个可以定制,在此只是用一个textview代替,实现简单的功能,...
2.客户端UI用到的知识点包括:强大的SlidingMenu、fragment、actionbarsherlock、ShareSDK、OneKeyShare,ImageLoader、自定义的ListView(下拉刷新和底部加载更多)、listview的嵌套。 3.数据的存储用到的知识点:...
知识点如下: 购物车模块 百度地图模块 客户端和服务器端数据交换json 讯飞语音输入 listview异步图片加载,下拉刷新 app注意事项 百度地图定位,讯飞语音等功能如果大家下载后运行报错,请在lib文件夹里面添加...
本项目是一个适合新手学习的安卓记事本程序例子源码,包括很多安卓基础的知识,并且代码有比较详细的注释,主要用到了listView展示数据和SQLite的读写建表等操作。代码量很少没有分层布局也相对简单方便学习分析。...
记得在我刚接触Android的时候对系统联系人中的特效...首先讲一下需要提前了解的知识点,这里我们最需要用到的就是SectionIndexer,它能够有效地帮助我们对分组进行控制。由于SectionIndexer是一个接口,你可以自定义一
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...