我有一个带有自定义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()方法中找到FrameLayout

FrameLayout 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/

10-12 05:13