Android 单选之史上最简单的ListView实现单选效果,通过设置背景颜色来实现单选效果

一.效果图:

 

二.简单实现:

1.主函数代码:

import android.content.DialogInterface;import android.graphics.Color;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AlertDialog;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.RelativeLayout;import android.widget.TextView;import android.widget.Toast;import com.example.m1571.myapplication.DataSupport;import com.example.m1571.myapplication.ListViewActivity;import com.example.m1571.myapplication.R;import com.example.m1571.myapplication.badgeview.Badge;import com.example.m1571.myapplication.badgeview.QBadgeView;import com.example.m1571.myapplication.bean.RadioBean;import com.example.m1571.myapplication.view.activity.animation.AnimationActivity;import com.example.m1571.myapplication.view.activity.dialog.AlertDialogActivity;import java.util.ArrayList;import java.util.List;public class ListViewRadioActivity extends AnimationActivity{    ListView listview;    private List data = new ArrayList<>();    private ListAdapter listAdapter;    private AlertDialog.Builder builder;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_listview_radio);        listview = (ListView) findViewById(R.id.listview);//        listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);//单选模式        data.clear();        for (int i = 0; i < 100; i++) {            data.add(new RadioBean(i+"",""+i,false));        }        listAdapter = new ListAdapter();        listview.setAdapter(listAdapter);        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {                builder = new AlertDialog.Builder(ListViewRadioActivity.this).setIcon(R.drawable.g).setTitle("系统提示")                        .setMessage("确定要删除吗").setPositiveButton("确定", new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialogInterface, int i) {                                //ToDo: 你想做的事情                                data.remove(position);                                listAdapter.notifyDataSetChanged();                                Toast.makeText(ListViewRadioActivity.this, "已删除"+position, Toast.LENGTH_LONG).show();                            }                        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialogInterface, int i) {                                //ToDo: 你想做的事情                                dialogInterface.dismiss();                            }                        });                builder.create().show();//                data.remove(position);//                listview.getAdapter().getItem(position);//                listview.getAdapter().getView(position,view,listview);//                listAdapter.notifyDataSetChanged();            }        });    }    class ListAdapter extends BaseAdapter {        public ListAdapter() {//            data = new DataSupport().getData();        }        @Override        public int getCount() {            return data.size();        }        @Override        public Object getItem(int position) {            return data.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(final int position, View convertView, ViewGroup parent) {            final ListAdapter.Holder holder;            if (convertView == null) {                holder = new ListAdapter.Holder();                convertView = LayoutInflater.from(ListViewRadioActivity.this).inflate(R.layout.item_view, parent, false);                holder.textView = (TextView) convertView.findViewById(R.id.tv_content);                holder.root = (RelativeLayout) convertView.findViewById(R.id.root);                holder.badge = new QBadgeView(ListViewRadioActivity.this).bindTarget(convertView.findViewById(R.id.imageview));                holder.badge.setBadgeTextSize(12, true);                convertView.setTag(holder);            } else {                holder = (ListAdapter.Holder) convertView.getTag();            }            holder.textView.setText(data.get(position).getGoodsName());            holder.badge.setBadgeNumber(position);            holder.badge.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {                @Override                public void onDragStateChanged(int dragState, Badge badge, View targetView) {                    if (dragState == STATE_SUCCEED) {                        Toast.makeText(ListViewRadioActivity.this, String.valueOf(position), Toast.LENGTH_SHORT).show();                    }                }            });//            holder.root.setOnClickListener(new View.OnClickListener() {//                @Override//                public void onClick(View v) {                    if(data.get(position).getIsUser()){                        data.get(position).setIsUser(false);                        holder.root.setBackgroundColor(Color.BLUE);                    }else {                        data.get(position).setIsUser(true);                        holder.root.setBackgroundColor(Color.RED);                    }                    for (int i = 0; i < data.size(); i++) {                        if(data.get(position).getIsUser()){                            data.get(position).setIsUser(true);                        }else {                            data.get(position).setIsUser(false);                        }                    }//                }//            });            return convertView;        }        class Holder {            TextView textView;            Badge badge;            RelativeLayout root;        }    }}

2.主函数布局:

<?xml version="1.0" encoding="utf-8"?>    

3.适配器布局:

<?xml version="1.0" encoding="utf-8"?>                                

5.shape背景:

item_single_choice_selector.xml:

                            

shape_line_blue_new.xml: 

<?xml version="1.0" encoding="utf-8"?>                                                

shape_line.xml:

                                                                        

shape_line_gray.xml:

                                                                        

item_text_choice_selector.xml:

<?xml version="1.0" encoding="utf-8"?>                

color.xml:

<?xml version="1.0" encoding="utf-8"?>    #3F51B5    #303F9F    #FF4081    #89000000    #fff    #333    #ffd2d2d2    #33691E    #9C27B0    #A020F0    #FF4081    #FF9800    #00BCD4    #F57F17    #454545    #707070    #00ff00    #FF3baa24    #278918    #98cc8e    #4e9ce6    #3479d4    #9fc4ee    #eeeeee    #e8e8e8    #222222    #FFFFFF    #6633B5E5    #ebebeb    #f7f7f7    #ffffffd3

 

 

 

 

 

更多相关文章

  1. C语言函数的递归(上)
  2. [置顶] android ndk空指针导致CRASH的问题
  3. Android列表分页功能的实现,往下拉时刷新数据(显示正在加载中)
  4. Android使用Toast显示消息提示框
  5. Android进阶---android databinding 使用
  6. Android之SQLite数据库的使用
  7. Recycler的一些笔记
  8. Android应用程序安装过程源代码分析(2)
  9. 选项卡的使用方法一(Android学习随笔十二)

随机推荐

  1. Android(安卓)微信SDK分享功能中的最全过
  2. Android的文本编解码工具类
  3. 【email】android邮件Email
  4. Android(三)Android(安卓)SDK无法更新解
  5. android > android 客户端 ,PHP 服务器端
  6. android之实现各个组件点击事件监听
  7. This android SDk requires Android(安卓
  8. Android获取打开各种文件Intent汇总
  9. Android(安卓)Animation动画(Frame-By-Fra
  10. 2011.12.05(4)——— android JNI学习之三