导航:首页 > 操作系统 > android二级列表多选

android二级列表多选

发布时间:2022-08-10 15:57:53

android中如何在Listview中改变成多选模式

不清楚你是不是这个意思,就是想给ListView加上多选的设置,可以同时选几个条目,我是这样做得布局还是第一个的布局,只要给ListView设置一下,
mListView.setChoiceMod(ListView.CHOICE_MODE_MULTIPLE_MODAL);
mListView.setMultiChoiceModeListener(mListener);
/**
* 列表监听器
*/
private MultiChoiceModeListener mListener = new MultiChoiceModeListener() {

/**
* ActionMode创建之前所做的初始化工作
*/
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return true;
}
/**
* ActionMode使用后的销毁工作
*/
@Override
public void onDestroyActionMode(ActionMode mode) {
}
/**
* 创建ActionMode,菜单项加载
*/
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.action_menu, menu);
Log.e(MainActivity.TAG, "onCreateActionMode");
return true;
}
/**
* 点击ActionMode选项后触发事件
*/
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return true;
}
/**
* 做一些当选中项目/取消项目的记录工作
*/
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
}
};
就可以了,这里我做的是ActionMode,正好实现了这个功能,不知道能不能帮到你

⑵ android.中,使用ListView来呈现一个多选栏、为什么需要设置:listView.setItemsCanFocus(false);

因为要点击的多选栏要获取焦点,否则多选栏会点击不到。如果不设置的话,焦点会被listview的item获取。

⑶ 如何通过ListView实现多选效果

一.无图无真相

二.关键代码
1.主布局 sample_main.xml(单选和多选切换,设置android:choiceMode,其他不变)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:showDividers="middle"
android:divider="?android:dividerHorizontal">

<TextView style="@style/Widget.DescriptionBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/intro_message" />

<!--
当 ListView 已设置 choiceMode 时,它将允许用户"选择"
一个或多个项目。该框架提供了默认列表项目布局,这显示标准单选按钮或复选框旁边
单行文本:
《 android:choiceMode="singleChoice"》
R.layout.simple_list_item_single_choice 和
《 android:choiceMode="multipleChoice"》
R.layout.simple_list_item_multiple_choice。
应该设置 android: scrollbarStyle (显示和隐藏)
android:scrollbarStyle="outsideInset"不显示
android:scrollbarStyle="insideOverlay"显示
-->
<ListView android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingLeft="@dimen/page_margin"
android:paddingRight="@dimen/page_margin"
android:scrollbarStyle="outsideInset"
android:choiceMode="multipleChoice" /></LinearLayout>

2.item布局

<!--
从 sample_main.xml ListView 有 choiceMode 套,意思说当用户
选择列表项,列表视图将设置为该项目的根视图状态
(此 CheckableLinearLayout)"检查"。请注意,这需要查看
实现的接口。一旦选中根视图,则任何item,
有 plicateParentState 属性设置的将继承此"选中"状态.
--><com.example.android.customchoicelist.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:id="@+id/ll_contain"
android:paddingRight="8dp"
android:minHeight="?android:listPreferredItemHeight"
android:gravity="center_vertical">

<TextView android:id="@android:id/text1"
android:plicateParentState="true"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="@color/hideable_text_color" />

<ImageView android:src="@drawable/ic_hideable_item"
android:plicateParentState="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp" /></com.example.android.customchoicelist.CheckableLinearLayout>34

3.自定义单选和多选布局

package com.example.android.customchoicelist;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.View;import android.widget.Checkable;import android.widget.LinearLayout;/**
*自定义单选和多选布局
*/public class CheckableLinearLayout extends LinearLayout implements Checkable {
private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked}; private boolean mChecked = false; public CheckableLinearLayout(Context context, AttributeSet attrs) { super(context, attrs);
} //返回选中的状态
public boolean isChecked() { return mChecked;
} //设置选中的状态
public void setChecked(boolean b) { if (b != mChecked) {
mChecked = b;
refreshDrawableState();
}
} //选择开关
public void toggle() {
setChecked(!mChecked);
} //添加选中的条目状态
@Override
public int[] onCreateDrawableState(int extraSpace) { final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); if (isChecked()) {
mergeDrawableStates(drawableState, CHECKED_STATE_SET);
} return drawableState;
}
}343536373839404142434445

4.主要代码MainActivity.java

package com.example.android.customchoicelist;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;/**
*如何创建自定义的单或多选择
* @author 孤狼
* @since 2015-8-3
*/public class MainActivity extends Activity {
ListView listView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.sample_main);
listView =(ListView)findViewById(R.id.listview);
listView.setAdapter(new MyAdapter());
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //获取条目
CheckableLinearLayout linearLayout = (CheckableLinearLayout) view.findViewById(R.id.ll_contain); if (linearLayout.isChecked()) {
Log.e("选中true", position + "");
} else {
Log.e("未选中false", position + "");
} /**对于多选,建议创建集合,用于封装用户选中的条目position,存入时判定 用户来回切换的状态*/
}
});
} /**
* A simple array adapter that creates a list of cheeses.
*/
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() { return Cheeses.CHEESES.length;
} @Override
public String getItem(int position) { return Cheeses.CHEESES[position];
} @Override
public long getItemId(int position) { return Cheeses.CHEESES[position].hashCode();
} @Override
public View getView(int position, View convertView, ViewGroup container) { if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.list_item, container, false);
}
((TextView) convertView.findViewById(android.R.id.text1))
.setText(getItem(position)); return convertView;
}
}
}3435363738394

三.说明
通篇没有多余的废话,不浪费大家的宝贵时间,代码简洁,主要部分都有注释,实际开发中的需求,需要牛牛们自己自定义,发挥,如有疑问,请留言—-孤狼

四.示例源码(由于孤狼使用的是Android studio开发,暂时没有eclipse版)

⑷ android 怎么实现Listview的二级和三级列表

二级列表用ExpandableListView,三级好像得用treeview吧,三级没弄过

⑸ android的Listview多选问题!!根据第一个Listview选中的项,传到另一个Listview中,相同项默认选中!

litview.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Message message = new Message();
message.what = 1;
message.arg1 = arg2;
handler.sendMessage(message);
}

public Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
litview.setItemChecked((msg.arg1), true);
break;
}
super.handleMessage(msg);
}
};

onItemClick中的arg2不就是这一项在列表中的位置么?你可以发个消息设置listView。
如果没有用自定义适配器。要设置另外一个LISTview的话,需要循环一下,第一个列表选择的项,在第二个列表的位置。再来设置。
不过我建议你还是自定义一个适配器。

⑹ android listview 二级列表的作法

那个不是不是listview是ExpandableListview。

⑺ Android ExpandableListView中二级列表item数据重复怎么解决。

列表复用出问题了,应该在getView方法里处理好不同情况下的控件设值问题。

阅读全文

与android二级列表多选相关的资料

热点内容
需要很多文件夹怎么快速的新建啊 浏览:67
算法申请着作权 浏览:213
以前手机号换了要怎么登录农行app 浏览:192
线切割编程系统怎么绘画 浏览:234
如何搭建云服务器异地容灾 浏览:923
黄金拐点指标源码 浏览:92
算法导论第九章 浏览:277
鸽子为什么生成服务器没反应 浏览:491
freebsdnginxphp 浏览:216
噪声消除算法 浏览:608
vue类似电脑文件夹展示 浏览:112
后备服务器有什么功效 浏览:269
连不上服务器怎么连 浏览:600
什么构架的可以刷安卓系统 浏览:771
爱奇艺APP怎么兑换CDK 浏览:994
程序员买4k显示器还是2k显示器 浏览:144
python多进程怎么多窗口 浏览:818
电脑文件夹怎么取消类别 浏览:47
cad拉线段命令 浏览:924
如何用电脑清理手机没用的文件夹 浏览:100