我有一个带有自定义 BaseAdapter 的 ListView,它呈现总线号、起点和终点。单击一行时,我希望起点和终点消失并显示两个按钮。I have that done through clicklisteners on the adapter, but I need it to show the two buttons onle on one item at a time (hiding them when a different row is selected).
这很像 Android 的 Twitter 应用程序。我曾尝试使用 MultiChoiceModeListener 来做到这一点,尽管我觉得这不是我想要的。
这是适配器的 getView() 方法上 clickListener 的代码
busLabel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout parent = (LinearLayout) (v.getParent());
parent.findViewById(R.id.bus_selector).setVisibility(View.GONE);
parent.findViewById(R.id.bus_description).setVisibility(View.VISIBLE);
}
});
布局的 XML 文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bus_label"
android:orientation="vertical"
android:layout_height="@dimen/busline_height"
android:layout_width="@dimen/busline_width">
<TextView
android:id="@+id/bus_number"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:singleLine="true"
android:textSize="26sp"
android:textStyle="bold"
android:textColor="@color/regularbusfg"
android:background="@color/regularbusbg"
android:gravity="center" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bus_description"
android:visibility="visible"
android:orientation="vertical"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
android:id="@+id/bus_origin"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:singleLine="true"
android:textSize="18sp"
android:textColor="@android:color/black"
android:ellipsize="end"
android:gravity="center_vertical" />
<TextView
android:id="@+id/bus_destination"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:singleLine="true"
android:textSize="18sp"
android:textColor="@android:color/black"
android:ellipsize="end"
android:gravity="center_vertical" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bus_selector"
android:visibility="gone"
android:background="@drawable/border"
android:textColor="@color/darkgreyfg"
android:orientation="horizontal"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
android:id="@+id/bus_going"
android:text="@string/going"
android:textAllCaps="true"
android:textStyle="bold"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:singleLine="true"
android:textSize="22sp"
android:ellipsize="end"
android:gravity="center" />
<View
android:layout_width="1dp"
android:layout_height="fill_parent"
android:background="#DBDBDB"/>
<TextView
android:id="@+id/bus_coming"
android:text="@string/coming"
android:textAllCaps="true"
android:textStyle="bold"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:singleLine="true"
android:textSize="22sp"
android:ellipsize="end"
android:gravity="center" />
</LinearLayout>
</LinearLayout>
我来自 Web 开发,之前我所需要的只是查找选择了类的元素,将其删除并将该类应用于新元素。在 Android 上获得这种行为的程序是什么?应该有一个标准或“最被接受”的方式来做到这一点。