我有一个带有自定义BaseAdapter的ListView,用于呈现公交车号,出发地和目的地。点击一行时,我想让原点和目的地消失并显示两个按钮。我通过适配器上的clicklisteners完成了这项工作,但我需要它一次显示一个项目上的两个按钮(当选择不同的行时隐藏它们)。在ListView中只选择一个项目
这非常类似于Android的Twitter应用程序。我试图使用MultiChoiceModeListener来做到这一点,尽管我觉得这不是我想要的。
这是在适配器布局
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开发的getView()方法clickListener的代码和所有我需要之前是要查找选定类的元素,将其删除并将类应用于新元素。在Android上获取此行为的过程是什么?应该有一个标准或“最接受”的方式来做到这一点。
您可以将代码发布到您的clickListener吗?此外,它现在在工作吗?例如,按钮是否显示,而不是隐藏另一行的按钮? – SBerg413
请使用xml文件发布代码。 –
难道你不能遍历列表并确保在展示新列表之前隐藏了所有列表? ...或者只是对先前选定的元素进行引用并将其隐藏在新的一个选择上。 – AnxGotta