我有ListView自定义Adapter,View以ListView这种方式供应:
public View getView(int position, View convertView, ViewGroup parent)
{
RelativeLayout.LayoutParams lineParams;
RelativeLayout line=new RelativeLayout(context);
TextView tv=new TextView(context);
tv.setText("Text in postion="+i);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
line.addView(tv, lineParams);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
//checkbox
CheckBox checkBox=new CheckBox(context);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
line.addView(checkBox, lineParams);
return line;
}
Run Code Online (Sandbox Code Playgroud)
在ListView里面的某个地方setOnItemClickListener(),它应该拦截项目点击事件.我的问题是,每当我尝试向项目添加复选框时 - 我都没有得到任何回复ListView.如果我跳过CheckBox或其他任何Button工作.
我真的遇到了这个问题,我尝试了各种布局,对齐,包装等等 - 没用.看起来像CheckBox干扰ListView项目点击事件.
任何想法如何克服?
我有一个ListView(my_list.xml):
<ListView
android:id="@+id/my_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:choiceMode="singleChoice"
/>
Run Code Online (Sandbox Code Playgroud)
每个列表项的布局是(list_item.xml):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
>
<ImageView
android:id = "@+id/my_icon"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
android:layout_centerVertical="true"
/>
<TextView
android:id="@+id/my_str"
android:layout_width="wrap_content"
android:layout_height = "wrap_content"
android:layout_toRightOf="@id/my_icon"
/>
<!--This radio button makes the list item unselectable, why?-->
<RadioButton
android:id="@+id/my_radio_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
在Java代码中,我SimpleAdapter用于列表:
my_list = (ListView) findViewById(R.id.my_list);
SimpleAdapter adapter = new SimpleAdapter(context, getOptions(),
R.layout.list_item,
new String[] { "icon1","str1" },
new int[] …Run Code Online (Sandbox Code Playgroud) android android-widget android-emulator android-intent android-layout
当我点击其中一个列表项时,我已经填充了ListActivity一个启动另一个活动的Cursor使用SimpleCursorAdapter.我也ViewBinder用来做一些自定义的数据转换.
我想CheckBox在列表中的每一行添加一个,所以我改变了视图,并添加了一个CheckBox重力权利.
添加CheckBox已删除了单击项目的功能.按下列表项时,不再调用onListItemClick我覆盖的方法ListActivity.删除此CheckBox修复程序.为什么是这样?
此外,如果单击列表项的主要部分但CheckBox在选中项目时具有其他功能,如何设置列表以便继续执行我所需的功能?是否会onCheckedChangedListener为列表中的每个项目重新设置工作或相同的视图实例?
我正在尝试将一个复选框放入ExpandableListView.我怎么做?我扩展BaseExpandableListAdapter并将以下内容放入getGroupView():
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
ViewGroup parent) {
View view = convertView == null ?
context.getLayoutInflater().inflate(R.layout.onet_head, null) : convertView;
((TextView)view.findViewById(R.id.onetText)).setText(cats.get(groupPosition).value);
return view;
}
Run Code Online (Sandbox Code Playgroud)
注意膨胀布局?这就是我放置TextView和CheckBox的地方.我注意到在我的组行布局中放置一个复选框会在单击该行时禁用默认组行功能,从而显示辅助(子)列表.CheckBox按预期运行,但是当我点击它之外时,以太网CheckBox或OnGroupClickListener从未检测到点击.我怀疑以这种方式将CheckBox放入组行会干扰事件检测/处理,但到目前为止我无法跟踪它
有人可以帮我解决这个问题吗?CheckBox工作正常但包括直接点击框时检测点击次数
我为ListView创建了一个自定义ArrayAdapter,以便使用一些元素自定义列表的行.
我遇到的问题是我无法选择项目,单击时没有任何反应.这是我必须在我的自定义ArrayAdapter中实现的吗?它只有一个构造函数和一个getView方法.当我实例化我的列表并实现onListItemClick时,它被忽略,所以我认为它与我的自定义适配器有关...我已经通过示例进行了研究,但我什么都没发现.
我该怎么办?
编辑:在每一行中,我使用的是Checkbox,以及一个包含TextViews的LinearLayout.此LinearLayout是应该可选择的.