我有一个' ChecklistItem'具有以下属性的类:
private CheckBox checkBox;
private ImageButton noteButton;
private TextView vitalField;
我的复选框有onClick Listener
。现在的问题是,当我点击该复选框并调用OnClick()
方法时,我怎样才能找出ChecklistItem那个复选框的一部分?
每当我点击一个复选框时,我想将复选框所属的ChecklistItem
添加到数组中,但OnClick()
只知道调用它的复选框。
我怎样才能解决这个问题?
答案 0 :(得分:0)
好的,所以这个答案是根据我们的“长时间讨论”
让我们假设你想要一个 - 可用 - 查看你的列表,你写了一个单独的xml布局文件,名为list_item,如下所示:
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/checkbox"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_view"/>
所以现在让我们假设您在活动或片段中或者您想要托管视图的任何地方,现在我必须指出这只是一个示例,通常列表视图是您在这种情况下需要的但是我再次关于你的应用程序的细节很少,所以我会保持简单
假设您有一个垂直线性布局,并且想要向其添加这些“行”,则每行代表一个自定义视图
LinearLayout layout = findViewById(R.id.layout);
LayoutInflater inflater = LayoutInflater.from(this); // This inflater is responsible of creating instances of your view
View myView = inflater.inflate(R.layout.list_item, layout, false); // This view objects is the view you made in your xml file
CheckBox checkBox = (CheckBox) myView.findViewById(R.id.checkbox);
TextView textView = (TextView) myView.findViewById(R.id.text_view);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//if checkbox is checked enable textview for example
// here you have a reference to all the views you just created
// Weather you want to save them in a class together that's up to you and your app's logic
}
});
layout.addView((myView));
如果列表可能超出屏幕高度,您可能希望在滚动视图中包装线性布局。
BTW:ListView只是通过定义每行显示方式自动执行此操作的一种巧妙方式,当然它会为您管理您的视图并在屏幕显示时回收它们,但我只是想指出这个概念。希望这有助于你