国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android利用GridView實(shí)現(xiàn)單選效果

2019-10-23 18:29:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1.實(shí)現(xiàn)如圖所示的單選效果

android,gridview單選,gridview實(shí)現(xiàn)單選,gridview單選效果

由于Android提供的單選按鈕radiobutton只能單行或單列顯示,且樣式并不美觀,故可用GridView進(jìn)行改造,實(shí)現(xiàn)單選效果,而要實(shí)現(xiàn)這樣的效果重點(diǎn)就在GridView的適配器這塊了。

首先是GridView的item的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"> <RelativeLayout  android:id="@+id/options"  android:layout_width="match_parent"  android:layout_height="143dp">  <ImageView   android:id="@+id/imageView"   android:layout_width="65dp"   android:layout_height="65dp"/>  <TextView   android:id="@+id/textView"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_centerInParent="true"   android:text="通訊錄"/> </RelativeLayout></LinearLayout>

里邊很簡(jiǎn)單,就只用來(lái)放顯示選中效果的imageView和文字的textView

接下來(lái)是適配器:

public class GridViewRadioAdapter extends BaseAdapter { private Context mContext; private int lastPosition = -1;   //記錄上一次選中的圖片位置,默認(rèn)不選中 private String[] str = null;    //放問(wèn)題內(nèi)容文字的數(shù)組 public GridViewRadioAdapter(Context mContext) {  this.mContext = mContext; } public void setStr(String[] str){  //在activity中調(diào)用此方法傳入問(wèn)題的數(shù)組  this.str = str; } public void setSelection(int position) { //在activity中GridView的onItemClickListener中調(diào)用此方法,來(lái)設(shè)置選中位置  lastPosition = position; } @Override public int getCount() {  return str.length; } @Override public Object getItem(int position) {  return position; } @Override public long getItemId(int position) {  return position; } @Override public View getView(int position, View convertView, ViewGroup parent) {  ViewHolder viewHolder = null;  if (convertView == null){   viewHolder = new ViewHolder();   convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_gridview_radio_item, null);   viewHolder.textView = (TextView) convertView.findViewById(R.id.textView);   viewHolder.imageView = (ImageView) convertView.findViewById(R.id.imageView);   viewHolder.relativeLayout = (RelativeLayout) convertView.findViewById(R.id.options);   convertView.setTag(viewHolder);  }else {   viewHolder = (ViewHolder) convertView.getTag();  }  viewHolder.textView.setText(str[position]);  if (lastPosition == position){ //判斷是否為選中項(xiàng),選中項(xiàng)與非選中項(xiàng)設(shè)置不同的樣式   switch (position){  //選中狀態(tài)下設(shè)置樣式    case 0:     viewHolder.imageView.setBackgroundResource(R.drawable.option_a_checked);     break;    case 1:     viewHolder.imageView.setBackgroundResource(R.drawable.option_b_checked);     break;    case 2:     viewHolder.imageView.setBackgroundResource(R.drawable.option_c_checked);     break;    case 3:     viewHolder.imageView.setBackgroundResource(R.drawable.option_d_checked);     break;   }   viewHolder.relativeLayout.setBackgroundResource(R.drawable.shape_rect_orange);  }else {  //非選中狀態(tài)下設(shè)置樣式   switch (position){    case 0:     viewHolder.imageView.setBackgroundResource(R.drawable.option_a);     break;    case 1:     viewHolder.imageView.setBackgroundResource(R.drawable.option_b);     break;    case 2:     viewHolder.imageView.setBackgroundResource(R.drawable.option_c);     break;    case 3:     viewHolder.imageView.setBackgroundResource(R.drawable.option_d);     break;   }   viewHolder.relativeLayout.setBackgroundResource(R.drawable.shape_rect_gray);  }  return convertView; } class ViewHolder{  private TextView textView;  private ImageView imageView;  private RelativeLayout relativeLayout; }}

最后在activity中設(shè)置適配器:

GridViewRadioAdapter adapter = new GridViewRadioAdapter(mContext);adapter.setStr(options); //傳入問(wèn)題的選項(xiàng)mGridView.setAdapter(adapter);mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {  adapter.setSelection(position); //傳值更新  adapter.notifyDataSetChanged(); //每一次點(diǎn)擊通知adapter重新渲染 }}); 

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持VEVB武林網(wǎng)!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中江县| 万全县| 岳阳市| 青海省| 盐亭县| 固始县| 苍溪县| 岢岚县| 华亭县| 新乡市| 嘉峪关市| 惠水县| 松原市| 凤冈县| 赤城县| 雷山县| 岑溪市| 普兰县| 宁明县| 长宁县| 新野县| 交城县| 甘泉县| 政和县| 平安县| 景谷| 柳河县| 资中县| 鹤山市| 牙克石市| 綦江县| 巴青县| 师宗县| 崇左市| 平原县| 津市市| 凌源市| 永胜县| 丰宁| 宿松县| 广水市|