2017-07-21 11:16:41 csdn2314 阅读数 5042
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    19365 人正在学习 去看看 任苹蜻

效果图:
这里写图片描述

思路:声明一个变量index来记录当前的行,然后设置Item的点击监听,点击的时候更新index为当前点击的Item下标,然后刷新listView就好

mClassAdapter.notifyDataSetInvalidated();
通过adapter来刷新listview

listView Item的样式 xml 代码截图:
这里写图片描述

java类代码,声明一个变量来记录当前点击的行,笔者这里默认是 0
这里写图片描述

设置listview的点击监听
这里写图片描述

最后设置颜色的切换,就是在adapter的 接口方法中实现
这里写图片描述

截图中的颜色是笔者自定义的,大家可以根据实际需求来自定义

有什么不懂得可以留言,如果笔者会的话,会回复的。

2015-11-26 08:02:07 omayyouhappy 阅读数 2994
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    19365 人正在学习 去看看 任苹蜻

        因为项目中有这样的需求:一般消息类或者资讯类的界面,都有类似于网易客户端的点击之后更换背景色,并且保持这个颜色,表示已读取该条信息。这个功能一开始觉得已经实现了,在我的另一篇博客上有:点击打开链接 后来测试人员在测试的时候,发现这样一个奇怪的问题:

       当点击了listview的第0项,背景颜色改变,并且保持着背景没错,但滑动到下一个页面的listview,原本没有点击的item,竟然莫名其妙的出现了更换的背景。。。


      出现上述的情况是因为我实现的原理是这样的:当用户点击某一个item,会进入到监听方法里面,我设置一个变量保存所选中的位置position,也就是如下代码:

	 arg1.setSelected(true);
				selectItem = arg2; // 当前选择的节目item
				
				messageAd.notifyDataSetChanged(); // 通知adapter刷新数据

     在适配器里面,我就使用if语句判断,如果position等于刚才所点击的item,则设置背景颜色,如下代码:

if (selectItem == position) {
			//设置背景
			// }

      上述设置就会出现错乱的问题,原因以后再深究,下面贴出解决的办法,不多说直接上代码,有注释:

package com.explink.listview;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;

public class MainActivity extends Activity {
	private ListView mListView;
	private MyAdapter mAdapter;
	List<User> userList;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
		initData();
	}
	private void initView() {
		mListView = (ListView) findViewById(R.id.mListView);
	}
	private void initData() {
		User user = new User("卢磊", "13319405061");
		User user1 = new User("小明", "13319405062");
		User user2 = new User("小黄", "13319405063");
		User user3 = new User("小绿", "13319405064");
		User user4 = new User("卢磊", "13319405061");
		User user5 = new User("小明", "13319405062");
		User user6 = new User("小黄", "13319405063");
		User user7 = new User("小绿", "13319405064");
		User user8 = new User("卢磊", "13319405061");
		User user9 = new User("小明", "13319405062");
		User user10 = new User("小黄", "13319405063");
		User user11 = new User("小绿", "13319405064");
		User user12 = new User("卢磊", "13319405061");
		User user13 = new User("小明", "13319405062");
		User user14 = new User("小黄", "13319405063");
		User user15 = new User("小绿", "13319405064");
		User user16 = new User("卢磊", "13319405061");
		User user17 = new User("小明", "13319405062");
		User user18 = new User("小黄", "13319405063");
		User user19 = new User("小绿", "13319405064");
		User user20 = new User("卢磊", "13319405061");
		User user21 = new User("小明", "13319405062");
		User user22 = new User("小黄", "13319405063");
		User user23 = new User("小绿", "13319405064");
		// 一般从网络上获取的数据都是List集合
		userList = new ArrayList<User>();
		userList.add(user);
		userList.add(user1);
		userList.add(user2);
		userList.add(user3);
		userList.add(user4);
		userList.add(user5);
		userList.add(user6);
		userList.add(user7);
		userList.add(user8);
		userList.add(user9);
		userList.add(user10);
		userList.add(user11);
		userList.add(user12);
		userList.add(user13);
		userList.add(user14);
		userList.add(user15);
		userList.add(user16);
		userList.add(user17);
		userList.add(user18);
		userList.add(user19);
		userList.add(user20);
		userList.add(user21);
		userList.add(user22);
		userList.add(user23);

		mAdapter = new MyAdapter(MainActivity.this, userList);
		mListView.setAdapter(mAdapter);
		mListView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				mAdapter.recordPosition(arg2);
				mAdapter.notifyDataSetChanged();
			}
		});
	}
	@SuppressLint("UseSparseArrays")
	public class MyAdapter extends BaseAdapter {
		private LayoutInflater inflater;
		private List<User> userList;
		private List<Integer> pList = new ArrayList<Integer>();
		public MyAdapter(Context context, List<User> userList) {
			this.inflater = LayoutInflater.from(context);
			this.userList = userList;
		}
		@Override
		public int getCount() {
			return this.userList.size();
		}

		@Override
		public Object getItem(int position) {
			return userList.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}
		public void recordPosition(int position) {
			pList.add(position);
		}
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder;
			if (convertView == null) {
				convertView = inflater.inflate(R.layout.list_item, null);
				holder = new ViewHolder();
				holder.name_tv = (TextView) convertView
						.findViewById(R.id.name_tv);
				holder.phone_tv = (TextView) convertView
						.findViewById(R.id.phone_tv);
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			holder.name_tv.setText(userList.get(position).getName());
			holder.phone_tv.setText(userList.get(position).getPhoneNo());
			//防止convertView复用背景,导致第二页出现灰色背景,所以在判断设定为白色
			convertView.setBackgroundColor(Color.WHITE);
			for (int i = 0; i < pList.size(); i++) {
				if (pList.get(i) == position) {
					convertView.setBackgroundColor(Color.GRAY);
				}
			}
			return convertView;
		}
		public class ViewHolder {
			public TextView name_tv;
			public TextView phone_tv;
		}
	}
}
      数据源的类为:

package com.explink.listview;

public class User {
	public User(){
	}
	public User(String name,String phoneNo){
		this.name = name;
		this.phoneNo = phoneNo;
	}
	private String name;
	private String phoneNo;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPhoneNo() {
		return phoneNo;
	}
	public void setPhoneNo(String phoneNo) {
		this.phoneNo = phoneNo;
	}
	
}

           资源已经上传到csdn,传送门在此:android listview已读功能  ,上一篇的博客如果有需要查看的,可以参考如下链接:android listview保持背景颜色

2016-04-25 09:18:14 baidu_33714003 阅读数 3930
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    19365 人正在学习 去看看 任苹蜻

上周五工作时遇到了一个需求,要求顶部有三个单选按钮,按下其中一个按钮时,该按钮的背景颜色及文本颜色均发生改变。

首先考虑用了RadioGroup,控件里面设置了三个RadioButton,水平排列。

<RadioGroup
            android:id="@+id/radioGroup1"
            android:layout_width="150dp"
            android:layout_height="match_parent"
            android:layout_centerInParent="true"
            android:orientation="horizontal" >

         
        </RadioGroup>
RadioButton其他属性的设置就暂且不提,比较简单。

我在设计实现需求的时候,同样是考虑使用selector,这样代码会简洁直观方便。

一开始我是这样写selector的:将文字颜色和背景颜色分开,写两个selector。

背景颜色selector如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true" android:color="#ffffff"></item>
    <item android:state_checked="false" android:color="#3884F8"></item>

</selector>
文字颜色设置如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true" android:color="#3884F8"></item>
    <item android:state_checked="false" android:color="#ffffff"></item>

</selector>
然后在style.xml文件中设置:
        <item name="android:textColor">@drawable/function_item_button_text_selector</item>
        <item name="android:background">@drawable/item_button_selector</item>
结果查看布局显示结果时报错,
Failed to configure parser for D:\workspace\...\res\drawable\item_button_selector.xml
Exception details are logged in Window > Show View > Error Log
然后百思不得其解,后来百度前人的经验,知道设置背景颜色时候最好引用drawable,通过更改代码,然后就不再报错了。

现将正确代码粘贴下来,以供日后参考复习!

1. 在values文件夹下的strings.xml中添加代码:

    <drawable name="unchecked">#456598</drawable>
    <drawable name="checked">#ffffff</drawable>
2. drawable文件夹下的item_button_selector.xml文件中的代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/checked" android:state_checked="true"/>
    <item android:drawable="@drawable/unchecked" android:state_checked="false"/>

</selector>
     function_item_button_text_color文件中的代码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true" android:color="#3884F8"></item>
    <item android:state_checked="false" android:color="#ffffff"></item>

</selector>
3. 在style.xml文件中对应的style中添加代码
        <item name="android:textColor">@drawable/function_item_button_text_selector</item>
        <item name="android:background">@drawable/item_button_selector</item>
大功完成!





2015-09-23 14:20:29 omayyouhappy 阅读数 3093
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    19365 人正在学习 去看看 任苹蜻

    网上搜了很多的方法,使用selector选择器是无法实现点击之后更换背景,并保持颜色不变的功能,因为点击完之后,总会显示默认的图片,所以这个方案被否定了。也想多了使用第2个方案:因为是一组textview,点击其中一个背景变为打钩的图片,其他3个保持默认不变,所以想到了android 单选框,但最后考虑之后自定义旁边的单选按钮势必会增加更多的代码,所以也否定了,想要实现如下功能:


     没办法,最后只能通过监听点击事件,来更换4个textview的背景颜色,原理其实也是非常简单,就是当点击其中一个时候,其他的设置为默认,当点击第二个的时候,重置另外三个的背景,java代码如下:

	currencypairs.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				currencypairs.setBackgroundResource(R.drawable.grayright);
				openpositionprice
						.setBackgroundResource(R.drawable.grayrightmoren);
				floatingprofit.setBackgroundResource(R.drawable.grayrightmoren);
				dealtime.setBackgroundResource(R.drawable.grayrightmoren);

			}
		});

       虽然上述的解决的方法有点过于曲折,没有想到更加优雅的解决方式,有大神可以指出来更好的解决方案,搜了很长时间,也没看到有人解决了。

2015-11-19 23:26:45 wchicho 阅读数 10301
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    19365 人正在学习 去看看 任苹蜻

1. 介绍
今天在试用Android Studio的时候发现只有三种默认的主题,代码区的背景颜色要么是灰色的要么是白色的,在网络上搜索的答案也只是来回更改这三个主题,四处乱点击终于弄好了,希望可以帮助到大家!

2. 步骤

  • 点击设置
    这里写图片描述

  • 进入 Editor - Colors&Fonts - General
    这里写图片描述

  • Save As设置新自定义主题
    这里写图片描述

-更改Default Text颜色值为眼睛保护色
这里写图片描述

  • 大功告成
    这里写图片描述

android学习记录

阅读数 120

没有更多推荐了,返回首页