前段时间在项目开发中,有ListvIEw实现单选和多选的效果,特别是ListvIEw的单选效果,一开始项目比较紧,自己考虑的是用ListvIEw和radionbutton实现的,可能是自己考虑不周到的原因,效果是实现了,但是用户体验不怎么好,做完项目后,自己又弄了下,使用ListvIEw和imagevIEw实现,点击ListvIEw条目的时候就可以实现单选效果,这样用户体验就稍微好些。以下就是实现的方式:
activity_main.xml文件:
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context="com.Listtest.MainActivity$PlaceholderFragment" > <ListVIEw androID:ID="@+ID/ListvIEw" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" /></relativeLayout>
ListvIEw_item.xml文件
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context="com.Listtest.MainActivity$PlaceholderFragment" > <relativeLayout androID:layout_wIDth="fill_parent" androID:layout_height="50dp"> <TextVIEw androID:ID="@+ID/tv" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:textSize="15sp" androID:textcolor="#000000" androID:text="123112" androID:layout_centerVertical="true" androID:layout_marginleft="15dp"/> <ImageVIEw androID:ID="@+ID/iv" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:src="@drawable/sex_nor" androID:layout_alignParentRight="true" androID:layout_centerVertical="true" androID:layout_marginRight="15dp"/> </relativeLayout></relativeLayout>
MainActivity文件:
public class MainActivity extends ActionBaractivity implements OnItemClickListener { private listadapter adapter; private ListVIEw ListvIEw; private List<String> List=new ArrayList<String>(); @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestwindowFeature(Window.FEATURE_NO_Title); setContentVIEw(R.layout.activity_main); initVIEw(); } private voID initVIEw() { ListvIEw = (ListVIEw) findVIEwByID(R.ID.ListvIEw); addData(); adapter=new listadapter(MainActivity.this); ListvIEw.setAdapter(adapter); ListvIEw.setonItemClickListener(this); } private voID addData() { for (int i = 0; i < 20; i++) { List.add("深圳"+i); } } class listadapter extends BaseAdapter{ private int selected@R_502_4612@ = -1;// 选中的位置 private Context context; public listadapter(Context context) { this.context = context; } @OverrIDe public int getCount() { return List.size(); } @OverrIDe public Object getItem(int @R_502_4612@) { return List.get(@R_502_4612@); } public voID setSelected@R_502_4612@(int @R_502_4612@) { selected@R_502_4612@ = @R_502_4612@; } @OverrIDe public long getItemID(int @R_502_4612@) { return @R_502_4612@; } @OverrIDe public VIEw getVIEw(int @R_502_4612@,VIEw convertVIEw,VIEwGroup parent) { VIEwHolder holder; if (convertVIEw==null) { holder=new VIEwHolder(); convertVIEw=LayoutInflater.from(context).inflate(R.layout.ListvIEw_item,null); holder.tv=(TextVIEw) convertVIEw.findVIEwByID(R.ID.tv); holder.iv=(ImageVIEw) convertVIEw.findVIEwByID(R.ID.iv); convertVIEw.setTag(holder); }else{ holder=(VIEwHolder) convertVIEw.getTag(); } String string = List.get(@R_502_4612@); holder.tv.setText(string); if(@R_502_4612@%2==0){ if (selected@R_502_4612@==@R_502_4612@) { convertVIEw.setSelected(true); convertVIEw.setpressed(true);// convertVIEw.setBackgroundcolor(color.parsecolor("#0097e0")); holder.iv.setimageResource(R.drawable.sex_down); }else{ convertVIEw.setSelected(false); convertVIEw.setpressed(false);// convertVIEw.setBackgroundcolor(color.parsecolor("#e4ebf1")); holder.iv.setimageResource(R.drawable.sex_nor); } }else{ if (selected@R_502_4612@==@R_502_4612@) { convertVIEw.setSelected(true); convertVIEw.setpressed(true); holder.iv.setimageResource(R.drawable.sex_down);// convertVIEw.setBackgroundcolor(color.parsecolor("#0097e0")); }else{ convertVIEw.setSelected(false); convertVIEw.setpressed(false);// convertVIEw.setBackgroundcolor(color.parsecolor("#ced7de")); holder.iv.setimageResource(R.drawable.sex_nor); } } return convertVIEw; } class VIEwHolder{ TextVIEw tv; ImageVIEw iv; } } @OverrIDe public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int @R_502_4612@,long ID) { adapter.setSelected@R_502_4612@(@R_502_4612@); adapter.notifyDataSetInvalIDated(); }}
以上就是全部代码了。效果如下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是内存溢出为你收集整理的Android中listview和imageview实现条目单选效果全部内容,希望文章能够帮你解决Android中listview和imageview实现条目单选效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)