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

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

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

2019-12-12 02:56:25
字體:
供稿:網(wǎng)友

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

由于Android提供的單選按鈕radiobutton只能單行或單列顯示,且樣式并不美觀,故可用GridView進行改造,實現(xiàn)單選效果,而要實現(xià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>

里邊很簡單,就只用來放顯示選中效果的imageView和文字的textView

接下來是適配器:

public class GridViewRadioAdapter extends BaseAdapter { private Context mContext; private int lastPosition = -1;   //記錄上一次選中的圖片位置,默認不選中 private String[] str = null;    //放問題內(nèi)容文字的數(shù)組 public GridViewRadioAdapter(Context mContext) {  this.mContext = mContext; } public void setStr(String[] str){  //在activity中調(diào)用此方法傳入問題的數(shù)組  this.str = str; } public void setSelection(int position) { //在activity中GridView的onItemClickListener中調(diào)用此方法,來設(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){ //判斷是否為選中項,選中項與非選中項設(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); //傳入問題的選項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(); //每一次點擊通知adapter重新渲染 }}); 

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網(wǎng)!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 定州市| 北安市| 桦南县| 若尔盖县| 宣化县| 藁城市| 静安区| 长汀县| 盐源县| 拉萨市| 来安县| 肥东县| 新丰县| 宜州市| 开封市| 安吉县| 明溪县| 新昌县| 黄平县| 东丰县| 准格尔旗| 浦东新区| 黔东| 庐江县| 万全县| 铜鼓县| 神农架林区| 离岛区| 定襄县| 方正县| 辽阳市| 连云港市| 凤翔县| 六枝特区| 许昌县| 通许县| 金阳县| 保德县| 文昌市| 河北区| 农安县|