0

我的布局中有 2 个 ListView 和一个常见的行布局,并且该行重复多次。我很困惑如何在两个 ListView 上识别选择了哪个结果以及如何获取在中选择的 TextViews 的数据两个列表视图。

这是我的 ListView XML

<LinearLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_above="@+id/footerLayout"
         android:layout_below="@+id/sortFlightLayouts"
         android:orientation="horizontal" >

        <ListView
            android:id="@+id/lvDepartures"
            android:layout_weight="1"
            android:layout_marginLeft="5dp"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"/>
        <View
            android:layout_width="1dp"
            android:layout_height="wrap_content"
            android:background="@android:color/darker_gray" />
        <ListView
             android:id="@+id/lvArrivals"
             android:layout_weight="1"
             android:layout_marginLeft="5dp"
             android:layout_height="wrap_content"
             android:layout_width="wrap_content"/>

    </LinearLayout>

这是我在这两个 ListViews 中放入的行布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/flightLogo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="5sp"
        android:layout_marginRight="10sp"
        android:layout_marginTop="5sp"
        android:layout_marginLeft="5dp"
        android:src="@drawable/spicejet" />

    <TextView
        android:id="@+id/flightCompanyName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/flightLogo"
        android:text="SpiceJet" />

    <TextView
        android:id="@+id/flightNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/flightCompanyName"
       android:text="9W-123" />

    <TextView
        android:id="@+id/flightTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginLeft="12dp"
        android:layout_toRightOf="@+id/flightLogo"
        android:gravity="center_vertical"
        android:text="6:00 - 7:00" />

    <TextView
        android:id="@+id/flightStop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/flightTime"
        android:layout_toRightOf="@+id/flightLogo"
        android:layout_marginLeft="12dp"
        android:text="1h 35m | Non Stop" />

    <TextView
        android:id="@+id/amount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/flightStop"
        android:layout_below="@+id/flightStop"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/flightCompanyName"
        android:text="Rs 20,000" />

</RelativeLayout>

在我的 Activity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.test);
    ArrayList<HashMap<String, String>> flightData = new ArrayList<HashMap<String, String>>();
    for (int i = 0; i < 12; i++) {
        // creating new HashMap
        HashMap<String, String> map = new HashMap<String, String>();

        // adding each child node to HashMap key => value
        map.put(FlightCompanyName, "SpiceJet");
        map.put(FlightNumber, "SG-123");
        map.put(FlightTime, "6:00 - 7:00");
        map.put(FlightStop, "1h 30m | Non Stop");
        map.put(FlightCost, "Rs 12,000");

        // adding HashList to ArrayList
        flightData.add(map);
    }


    onewayListView=(ListView)findViewById(R.id.lvDepartures);

    ReturnListView=(ListView)findViewById(R.id.lvArrivals);

    // Getting adapter by passing xml data ArrayList
    onewaydata=new OneWayFlightResult(this, flightData);        
    onewayListView.setAdapter(onewaydata);

    returndata=new ReturnFlightResult(this, flightData);        
    ReturnListView.setAdapter(returndata);
    }

更多解释此设计是针对航班结果的。因此,如果用户正在搜索往返。我将向他展示 2 个结果,一个在左侧,另一个在右侧。现在我希望用户可以从左侧列表中选择一个航班,然后从右侧起飞一个航班。一旦他选择了航班。我必须获取所选航班的数据。所以我该怎么做。请帮帮我

4

1 回答 1

1
SparseBooleanArray checked;

lvDialog.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub

checked = lvDialog.getCheckedItemPositions();


if(checked.get(arg2))
{
chkText.setTextColor(Color.CYAN);
colorRow ++;
}
else
{
chkText.setTextColor(Color.BLACK);
colorRow--;
}
}
});

嘿这里有一些代码...试试

于 2013-08-07T05:47:32.277 回答