Android 中CheckBox多項選擇當(dāng)前的position信息提交的示例代碼
先給大家展示下效果圖:

廢話不多說了,下面通過示例代碼給大家介紹checkbox 多項選擇當(dāng)前的position信息提交,具體代碼如下所示:
package com.dplustours.b2c.View.activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import com.dplustours.b2c.R;
import com.dplustours.b2c.View.application.MyApplication;
import com.dplustours.b2c.View.application.UIHelper;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by zhq_zhao on 2017/7/7.
*/
public class ElseSelectCarinfosActivity extends BaseActivity implements View.OnClickListener {
private com.dplustours.b2c.View.view.MyListView else_listview;
private Button next_step;
private static CheckBox iv_select;
private ArrayList elsetcarDetails;
@Override
protected String setHeadStyleTitle() {
return "其他選擇";
}
@Override
protected void requestData() {
//租車信息列表
elsetcarDetails = new ArrayList();
MulAdapter mRentcarDetailsAdapter = new MulAdapter(this, elsetcarDetails);
else_listview.setAdapter(mRentcarDetailsAdapter);
elsetcarDetails.add(1);
elsetcarDetails.add(1);
elsetcarDetails.add(1);
mRentcarDetailsAdapter.notifyDataSetChanged();
else_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 取得ViewHolder對象,這樣就省去了通過層層的findViewById去實例化我們需要的cb實例的步驟
MulAdapter.ViewHolder viewHolder = (MulAdapter.ViewHolder) view.getTag();
viewHolder.iv_select.toggle();// 把CheckBox的選中狀態(tài)改為當(dāng)前狀態(tài)的反,gridview確保是單一選中
MulAdapter.getIsSelected().put(position, viewHolder.iv_select.isChecked());////將CheckBox的選中狀況記錄下來
if (viewHolder.iv_select.isChecked() == true) {
Toast.makeText(ElseSelectCarinfosActivity.this,"對勾"+position,Toast.LENGTH_LONG).show();
} else {
Toast.makeText(ElseSelectCarinfosActivity.this,"取消"+position,Toast.LENGTH_LONG).show();
}
Toast.makeText(ElseSelectCarinfosActivity.this,"當(dāng)前"+position,Toast.LENGTH_LONG).show();
}
});
}
@Override
protected View getSuccessView() {
View view = View.inflate(MyApplication.context, R.layout.activity_else_car, null);
else_listview = (com.dplustours.b2c.View.view.MyListView) view.findViewById(R.id.else_listview);
next_step = (Button) view.findViewById(R.id.next_step);
next_step.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.next_step:
UIHelper.Go(ElseSelectCarinfosActivity.this, CarInfosOkActivity.class);
break;
default:
break;
}
}
public static class MulAdapter extends BaseAdapter {
private LayoutInflater inflater = null;//導(dǎo)入布局
private Context context;
//上下文
private ArrayList<String> list;
// 控制CheckBox選中情況
private static HashMap<Integer, Boolean> isSelected;
//導(dǎo)入布局
public MulAdapter(Context context, ArrayList<String> list) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
isSelected = new HashMap<Integer, Boolean>();
initData();
}
private void initData() {
//初始化isSelected的數(shù)據(jù)
for (int i = 0; i < list.size(); i++) {
getIsSelected().put(i, false);
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//listview每顯示一行數(shù)據(jù),該函數(shù)就執(zhí)行一次
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
//當(dāng)?shù)谝淮渭虞dListView控件時 convertView為空
convertView = inflater.inflate( R.layout.activity_elsecar_details, null);
//所以當(dāng)ListView控件沒有滑動時都會執(zhí)行這條語句
holder = new ViewHolder();
holder.iv_select = (CheckBox) convertView.findViewById(R.id.iv_select);
convertView.setTag(holder);//為view設(shè)置標(biāo)簽
} else {
//取出holder
holder = (ViewHolder) convertView.getTag();
//the Object stored in this view as a tag
}
if (getIsSelected().get(position)!=null) {
// 根據(jù)isSelected來設(shè)置checkbox的選中狀況
holder.iv_select.setChecked(getIsSelected().get(position));
}
return convertView;
}
public class ViewHolder {
CheckBox iv_select;
}
public static HashMap<Integer, Boolean> getIsSelected() {
return isSelected;
}
public void setIsSelected(HashMap<Integer, Boolean> isSelected) {
MulAdapter.isSelected = isSelected;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/weixin"
android:orientation="vertical">
<com.dplustours.b2c.View.view.InnerScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:layout_gravity="center"
android:background="@color/white"
android:gravity="center"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_10">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center|left"
android:text="車輛租金"
android:textColor="@color/black"
android:textSize="@dimen/sp_15" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:gravity="center"
android:text="¥ 6000.00×1=¥ 600.00"
android:textColor="@color/gray"
android:textSize="@dimen/sp_13" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/login_line" />
<com.dplustours.b2c.View.view.MyListView
android:id="@+id/else_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
</com.dplustours.b2c.View.view.MyListView>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/login_line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:layout_gravity="center|right"
android:background="@color/white"
android:gravity="center|right"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_10">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginRight="@dimen/dp_10"
android:layout_weight="3"
android:gravity="center|right"
android:text="¥6000.00"
android:textColor="@color/red"
android:textSize="@dimen/sp_15" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/login_line" />
</LinearLayout>
</com.dplustours.b2c.View.view.InnerScrollView>
<Button
android:id="@+id/next_step"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:background="@color/yuyue"
android:gravity="center"
android:text="下一步"
android:textColor="#FFFFFF"
android:textSize="@dimen/sp_18" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_10">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<CheckBox
android:focusable="false"
android:clickable="false"
android:button="@null"
android:background="@drawable/chebox_mult_select"
android:id="@+id/iv_select"
android:layout_width="@dimen/dp_25"
android:gravity="center|left"
android:layout_height="@dimen/dp_25"
android:layout_gravity="center"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:paddingLeft="@dimen/dp_15"
android:text="手續(xù)費"
android:textColor="@color/center_item_text" />
</LinearLayout>
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="3"
android:textColor="@color/black"
android:gravity="center"
android:text="¥ 50.00" />
</LinearLayout>
</LinearLayout>
package com.dplustours.b2c.View.activity;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.dplustours.b2c.R;
import com.dplustours.b2c.Utils.NetUtil;
import com.dplustours.b2c.View.application.MyApplication;
import com.zhy.http.okhttp.OkHttpUtils;
/**
* Created by zhq_zhao on 2017/4/7.
* acticity的基類用來管理所有的activity
*/
public abstract class BaseActivity extends AppCompatActivity {
private View view;
private LinearLayout ll_activity_base;
private Button btn_headtitle_leftback;
private TextView g_headtitle_title_textview;
private FrameLayout tl_header_info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//創(chuàng)建公共的view就是頭部樣式
view = View.inflate(MyApplication.context, R.layout.activity_header_style_base, null);
ll_activity_base = (LinearLayout) view.findViewById(R.id.ll_activity_base);
btn_headtitle_leftback = (Button) view.findViewById(R.id.btn_headtitle_leftback);
g_headtitle_title_textview = (TextView) view.findViewById(R.id.g_headtitle_title_textview);
tl_header_info = (FrameLayout) view.findViewById(R.id.tl_header_info);
//這個是讓子類去實現(xiàn)具體的view
View successView = getSuccessView();
//在添加之前要讓沒數(shù)據(jù)的時候子view也要填充滿
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
ll_activity_base.addView(successView, params);
//動態(tài)添加view
setContentView(view);
//初始化頭部樣式的邏輯
intiHeadStyle(btn_headtitle_leftback, g_headtitle_title_textview);
//添加沉浸式狀態(tài)欄
addStatlan();
//判斷網(wǎng)絡(luò)是否打開
if (NetUtil.isNetworkAvailable(MyApplication.context) == true) {//說明網(wǎng)絡(luò)已經(jīng)打開
//從服務(wù)器獲取數(shù)據(jù)
requestData();
} else {
Toast.makeText(MyApplication.context, "請連接網(wǎng)絡(luò)", Toast.LENGTH_LONG).show();
}
}
private void intiHeadStyle(Button btn_headtitle_leftback, TextView g_headtitle_title_textview) {
btn_headtitle_leftback.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finishActivity();
}
});
//頭部樣式設(shè)置標(biāo)題讓子類去實現(xiàn)
String headTileinfo = setHeadStyleTitle();
g_headtitle_title_textview.setText(headTileinfo);
}
protected void finishActivity(){
finish();
}
/**
* 返回頭部字符串
*
* @return
*/
protected abstract String setHeadStyleTitle();
private void addStatlan() {
//判斷SDK版本是否大于等于19,大于就讓他顯示,小于就要隱藏,不然低版本會多出來一個
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
tl_header_info.setVisibility(View.VISIBLE);
//還有設(shè)置View的高度,因為每個型號的手機狀態(tài)欄高度都不相同
} else {
tl_header_info.setVisibility(View.GONE);
}
}
@TargetApi(19)
private void setTranslucentStatus(boolean on) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}
/**
* 初始化數(shù)據(jù)
*
* @return
*/
protected abstract void requestData();
/**
* 創(chuàng)建自己的view
*
* @return
*/
protected abstract View getSuccessView();
@Override
protected void onDestroy() {
super.onDestroy();
OkHttpUtils.getInstance().cancelTag(MyApplication.context);
}
/**
* 根據(jù)EditText所在坐標(biāo)和用戶點擊的坐標(biāo)相對比,來判斷是否隱藏鍵盤,因為當(dāng)用戶點擊EditText時沒必要隱藏
*
* @param v
* @param event
* @return
*/
public boolean isShouldHideInput(View v, MotionEvent event) {
if (v != null && (v instanceof EditText)) {
int[] l = {0, 0};
v.getLocationInWindow(l);
int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth();
if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) {
// 點擊EditText的事件,忽略它。
return false;
} else {
return true;
}
}
// 如果焦點不是EditText則忽略,這個發(fā)生在視圖剛繪制完,第一個焦點不在EditView上,和用戶用軌跡球選擇其他的焦點
return false;
}
/**
* 多種隱藏軟件盤方法的其中一種
*
* @param token
*/
public void hideSoftInput(IBinder token) {
if (token != null) {
InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// 獲得當(dāng)前得到焦點的View,一般情況下就是EditText(特殊情況就是軌跡求或者實體案件會移動焦點)
View v = getCurrentFocus();
if (isShouldHideInput(v, ev)) {
hideSoftInput(v.getWindowToken());
}
}
return super.dispatchTouchEvent(ev);
}
}
以上所述是小編給大家介紹的Android 中CheckBox多項選擇當(dāng)前的position信息提交的示例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Android CheckBox中設(shè)置padding無效解決辦法
- Android開發(fā)之CheckBox的簡單使用與監(jiān)聽功能示例
- Android 中CheckBox的isChecked的使用實例詳解
- Android開發(fā)手冊自定義Switch開關(guān)按鈕控件
- Android開關(guān)控件Switch的使用案例
- Android 自定義Switch開關(guān)按鈕的樣式實例詳解
- Android UI控件Switch的使用方法
- Android單選按鈕RadioButton的使用方法
- Android復(fù)選框CheckBox與開關(guān)按鈕Switch及單選按鈕RadioButton使用示例詳解
相關(guān)文章
Android 網(wǎng)絡(luò)圖片查看顯示的實現(xiàn)方法
本篇文章小編為大家介紹,Android 網(wǎng)絡(luò)圖片查看顯示的實現(xiàn)方法,需要的朋友參考下2013-04-04
Android開發(fā)自學(xué)筆記(一):Hello,world!
這篇文章主要介紹了Android開發(fā)自學(xué)筆記(一):Hello,world!本文講解了創(chuàng)建HelloWorld工程、編寫代碼、啟動模擬器等步驟,需要的朋友可以參考下2015-04-04
Android編程之匿名內(nèi)部類與回調(diào)函數(shù)用法分析
這篇文章主要介紹了Android編程之匿名內(nèi)部類與回調(diào)函數(shù)用法,結(jié)合實例形式分析了Android編程中所涉及的java匿名內(nèi)部類與回調(diào)函數(shù)的概念、定義、使用方法與相關(guān)注意事項,需要的朋友可以參考下2016-10-10
Kotlin?協(xié)程異步熱數(shù)據(jù)流的設(shè)計與使用講解
這篇文章主要為大家介紹了Kotlin?協(xié)程協(xié)程異步熱數(shù)據(jù)流的設(shè)計與使用講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Android 仿摩拜單車共享單車進度條實現(xiàn)StepView效果
這篇文章主要介紹了android 仿摩拜單車共享單車進度條實現(xiàn)StepView效果的實例,通過定義五個狀態(tài),分別為:為完成、正在進行、已完成、終點完成、終點未完成。具體實現(xiàn)代碼,大家參考下2017-03-03
Android Service判斷設(shè)備聯(lián)網(wǎng)狀態(tài)詳解
本文主要介紹Android Service判斷聯(lián)網(wǎng)狀態(tài),這里提供了相關(guān)資料并附有示例代碼,有興趣的小伙伴可以參考下,幫助開發(fā)相關(guān)應(yīng)用功能2016-08-08
Android Studio中配置OpenCV庫開發(fā)環(huán)境的教程
這篇文章主要介紹了Android Studio中配置OpenCV庫開發(fā)環(huán)境的教程,OpenCV有Java接口,因而也經(jīng)常被用來做安卓開發(fā),需要的朋友可以參考下2016-05-05

