我有一个带有自定义BaseAdapter的列表视图,该适配器可填充json / internet中的列表视图项。
在每个列表视图项中,我都有一个伪按钮(FrameLayouts),其中带有单击事件。例如,当单击“ MAYBE”时,我呼叫服务器并将事件状态更改为“ Maybe”。调用成功后,我想将FrameLayouts背景更改为适当的颜色(可能为橙色)。
我遇到困难的地方是引用其他/相邻的FrameLayout,因此我可以将其背景更改为“中性”。
我所有的事件都在BaseAdapter中,我在GetView方法中设置了onClick事件。
我的问题是:是否有更好的方法/如何为每个FrameLayout设置onclick事件,所以被单击的FrameLayout知道其他相邻FrameLayout的click事件,因此我可以将其背景更改为中性,并将所选背景更改为受尊重的颜色。
谢谢。
最佳答案
在您的XML中将这些语言添加到您的FrameLayout(Button)
android:clickable="true"
android:onClick="onMaybeClick"
然后在您的baseAdapter
getView()
方法中找到FrameLayoutFrameLayout maybeBtn = (FrameLayout)convertView.findViewById(R.id.list_item_maybe_btn);
maybeBtn.setTag(4257 + postion);
您也可以在
maybeBtn
中将getView()
onClickable设置为XML,而不是XML,clicklistener也是如此。在您的活动中,您可以创建一个
onButtonClick(View v)
方法public void onMaybeClick(View v)
{
int position = (Integer)((FrameLayout)v).getTag() - 4257; //To get the position of the click
LinearLayout parent = (LinearLayout)v.getParent();
FrameLayout btnYes = (FrameLayout)parent.getChildAt(0); //first button
FrameLayout btnNo = (FrameLayout)parent.getChildAt(2); //second button
ServerCallback(new requestListener(){
ifSuccess(){
v.setBackground(...);
}
]);
}
关于android - Android Listview项目请点击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24894088/