日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL建立多选一列表_如何实现自定义列表的多个item,的单选或多选

發(fā)布時間:2025/3/12 数据库 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL建立多选一列表_如何实现自定义列表的多个item,的单选或多选 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

展開全部

自定義ListView item中包含一個e69da5e6ba903231313335323631343130323136353331333337376333textview 和checkbox,checkbox選中級別高于item,故在xml中進行屏蔽

單選方法:(該方法同樣適用于radiobutton)

main.xml

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

>

android:id="@+id/img"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:src="@drawable/triangle16blue"/>

android:id="@+id/lvGroup"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/downbutton_corner"/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal" >

android:id="@+id/item_tv"

android:textSize="18sp"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:gravity="center_vertical" />

android:id="@+id/item_cb"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:focusable="false"

android:clickable="false"

android:focusableInTouchMode="false"

android:gravity="center_vertical"/>

MainActivity.java

public class MainActivity extends Activity {

private static final String TAG = "MainActivity";

private ListView listView;

private ArrayList groups;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

listView = (ListView) this.findViewById(R.id.list);

groups = new ArrayList();

groups.add("11");

groups.add("22");

groups.add("33");

groups.add("44");

groups.add("55");

groups.add("66");

groups.add("77");

GroupAdapter adapter = new GroupAdapter(this,groups);

listView.setAdapter(adapter);

listView.setOnItemClickListener(listItemClickListener);

OnItemClickListener listItemClickListener=new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position,

long id) {

取得ViewHolder對象,這樣就省去了通過層層的findViewById去實例化我們需要的cb實例的步驟

ViewHolder viewHolder=(ViewHolder)view.getTag();

viewHolder.cb.toggle();// 把CheckBox的選中狀態(tài)改為當前狀態(tài)的反,gridview確保是單一選中

}

};

}

}

}

GroupAdapter.java

public class GroupAdapter extends BaseAdapter {

private Activity activity;//上下文

private ArrayList list;

private LayoutInflater inflater=null;//導入布局

private int temp=-1;

public GroupAdapter(Activity context, ArrayList list) {

this.activity = context;

this.list = list;

inflater=LayoutInflater.from(context);

}

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int position) {

return list.get(position);

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

//listview每顯示一行數(shù)據(jù),該函數(shù)就執(zhí)行一次

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder=null;

if (convertView==null) {//當?shù)谝淮渭虞dListView控件時 convertView為空

convertView=inflater.inflate(R.layout.group_item_view, null);//所以當ListView控件沒有滑動時都會執(zhí)行這條語句

holder=new ViewHolder();

holder.tv=(TextView)convertView.findViewById(R.id.item_tv);

holder.cb=(CheckBox)convertView.findViewById(R.id.item_cb);

convertView.setTag(holder);//為view設置標簽

}

else{//取出holder

holder=(ViewHolder) convertView.getTag();//the Object stored in this view as a tag

}

//設置list的textview顯示

holder.tv.setTextColor(Color.WHITE);

holder.tv.setText(list.get(position));

// 根據(jù)isSelected來設置checkbox的選中狀況

holder.cb.setId(position);//對checkbox的id進行重新設置為當前的position

holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

//把上次被選中的checkbox設為false

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if(isChecked){//實現(xiàn)checkbox的單選功能,同樣適用于radiobutton

if(temp!=-1){

//找到上次點擊的checkbox,并把它設置為false,對重新選擇時可以將以前的關掉

CheckBox tempCheckBox=(CheckBox)activity.findViewById(temp);

if(tempCheckBox!=null)

tempCheckBox.setChecked(false);

}

temp=buttonView.getId();//保存當前選中的checkbox的id值

}

}

});

//System.out.println("temp:"+temp);

//System.out.println("position:"+position);

if(position==temp)//比對position和當前的temp是否一致

holder.cb.setChecked(true);

else

holder.cb.setChecked(false);

return convertView;

}

static class ViewHolder {

TextView tv;

CheckBox cb;

}

}

listview checkbox實現(xiàn)多選框

MainAcitvity.java

public class MainActivity extends Activity {

private static final String TAG = "MainActivity";

private ListView listView;

private ArrayList groups;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

listView = (ListView) this.findViewById(R.id.list);

groups = new ArrayList();

groups.add("11");

groups.add("22");

groups.add("33");

groups.add("44");

groups.add("55");

groups.add("66");

groups.add("77");

GroupAdapter adapter = new GroupAdapter(this,groups);

listView.setAdapter(adapter);

listView.setOnItemClickListener(listItemClickListener);

OnItemClickListener listItemClickListener=new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position,

long id) {

取得ViewHolder對象,這樣就省去了通過層層的findViewById去實例化我們需要的cb實例的步驟

ViewHolder viewHolder=(ViewHolder)view.getTag();

viewHolder.cb.toggle();// 把CheckBox的選中狀態(tài)改為當前狀態(tài)的反,gridview確保是單一選中

GroupAdapter.getIsSelected().put(position, viewHolder.cb.isChecked());//將CheckBox的選中狀況記錄下來

}

};

}

}

GroupAdapter.java

public class GroupAdapter extends BaseAdapter {

private Context context;//上下文

private ArrayList list;

//控制CheckBox選中情況

private static HashMap isSelected;

private LayoutInflater inflater=null;//導入布局

public GroupAdapter(Context context, ArrayList list) {

this.context = context;

this.list = list;

inflater=LayoutInflater.from(context);

isSelected=new HashMap();

initData();

}

private void initData(){//初始化isSelected的數(shù)據(jù)

for(int i=0;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) {

// TODO Auto-generated method stub

return position;

}

//listview每顯示一行數(shù)據(jù),該函數(shù)就執(zhí)行一次

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder=null;

if (convertView==null) {//當?shù)谝淮渭虞dListView控件時 convertView為空

convertView=inflater.inflate(R.layout.group_item_view, null);//所以當ListView控件沒有滑動時都會執(zhí)行這條語句

holder=new ViewHolder();

holder.tv=(TextView)convertView.findViewById(R.id.item_tv);

holder.cb=(CheckBox)convertView.findViewById(R.id.item_cb);

convertView.setTag(holder);//為view設置標簽

}

else{//取出holder

holder=(ViewHolder) convertView.getTag();//the Object stored in this view as a tag

}

//設置list的textview顯示

holder.tv.setTextColor(Color.WHITE);

holder.tv.setText(list.get(position));

// 根據(jù)isSelected來設置checkbox的選中狀況

holder.cb.setChecked(getIsSelected().get(position));

return convertView;

}

static class ViewHolder {

TextView tv;

CheckBox cb;

}

public static HashMapgetIsSelected(){

return isSelected;

}

public static void setIsSelected(HashMap isSelected){

GroupAdapter.isSelected=isSelected;

}

}其中,getview負責顯示每一行l(wèi)istview item,每顯示一行就執(zhí)行一次getview,

若要單選,必須保存當前選中的checkbox的position值,與listview 的每一個item的position進行比較,相同時才設置checkbox ischeck=true;

只有checkbox的setOnCheckChangeListener可以做到這點,保存上一次點擊的position值,對checkbox的id值重新設置.temp保存該id值.

getview負責顯示數(shù)據(jù),onitemselectedlistener負責發(fā)送消息,提取數(shù)據(jù),處理數(shù)據(jù)

本回答被提問者和網(wǎng)友采納

已贊過

已踩過<

你對這個回答的評價是?

評論

收起

總結

以上是生活随笔為你收集整理的MySQL建立多选一列表_如何实现自定义列表的多个item,的单选或多选的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。