0

我是 Java 和 Android 开发的初学者,我确信我做错了;到目前为止,这只是我想出来的方式。也就是说,我有一个应用程序可以显示类似高尔夫记分卡的内容。4 名玩家中的每人都有一个部分(主要行)。每个玩家行包括 3 个子行;一个用于标准杆(行中的 18 个值),一个用于孔让分盘(18 个值),一个用于得分(18 个值)。我希望用户单击主要行并根据单击行中命名的玩家显示另一个活动。

因此,我使用单个 ListView 创建了一个 XML 布局。我为页面标题创建了一个 XML 布局,其中一个 GridView 定义了 12 列,每个列都有一个用于列标题的 TextView,我为主要行创建了一个 XML 布局,其中一个 GridView 包含 54 个项目的 TextViews(3 个子行,18 个项目) . 我还在行 def XML 中的 GridLayout 声明中添加了一个 onClick 侦听器。加入一个自定义的 arrayAdapter 来处理 4 个玩家,我的记分卡出现在屏幕上。

一切都显示正常,当我单击主要行时,我会到达 clickListener 中的调试断点,我可以触发 Intent 以启动显示玩家详细信息的活动。但是,我不知道如何确定点击了哪个玩家(主要行)。

String item = ((TextView)view).getText().toString();

在单击处理程序中使应用程序崩溃,我想是因为 clickListener 是在 GridLayout 或类似的东西上建立的。

那么,设置有什么问题,我怎样才能得到我需要的东西呢?

谢谢

这是相关代码。对不起,如果它很多...

activity_display_scorecard.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"> 

     <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

这是activity_sisplay_scorecard_row.xml(我编辑了第4-12列)

    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:useDefaultMargins="true"
    android:alignmentMode="alignBounds"
    android:columnOrderPreserved="false"
    android:columnWidth="90dp"
    android:columnCount="12" 
    android:id="@+id/SCRow"
    android:onClick="displayScore"
    >
    <TextView
            android:text=""
            android:layout_column="0"
            android:textSize="15sp"
            android:layout_gravity="left"
            />
    <TextView
            android:text="Par"
            android:layout_column="1"
            android:textSize="15sp"
            android:layout_gravity="right"
            />
    <TextView
        android:id="@+id/Par_Hole_1"
            android:text="V_1"
            android:textSize="15sp"
            android:layout_gravity="center_horizontal"
            />
<!-- A bunch more for this row -->
    <TextView
            android:text=""
            android:layout_column="0"
            android:textSize="15sp"
            android:layout_gravity="left"
            />
    <TextView
            android:text="HCP"
            android:layout_column="1"
            android:textSize="15sp"
            android:layout_gravity="right"
            />
    <TextView
            android:id="@+id/HCP_Hole_1"
            android:text="V_1"
            android:textSize="15sp"
            android:layout_gravity="center_horizontal"
            />
<!-- A bunch more for this row -->
    <TextView
            android:text=""
            android:textSize="15sp"
            android:layout_gravity="center_horizontal"
            />

    <TextView
            android:text="Name"
            android:id="@+id/Row_Name"
            android:layout_column="0"
            android:textSize="15sp"
            android:layout_gravity="left"
            />

    <TextView
            android:text="Bet"
            android:layout_column="1"
            android:textSize="15sp"
            android:layout_gravity="right"
            />


    <TextView
            android:id="@+id/Bet_Hole_1"
            android:text="B1"
            android:textSize="15sp"
            android:layout_gravity="center_horizontal"
            />

    <!-- A bunch more for this row -->
    <TextView
            android:text=""
            android:layout_column="0"
            android:textSize="15sp"
            android:layout_gravity="left"
            />

    <TextView
            android:text="Score"
            android:layout_column="1"
            android:textSize="15sp"
            android:layout_gravity="right"
            />


    <TextView
            android:id="@+id/Score_Hole_1"
            android:text="V_1"
            android:textSize="15sp"
            android:layout_gravity="center_horizontal"
            />

<!-- A bunch more for this row -->

</GridLayout>

这是活动 DisplayScorecard

public class DisplayScorecard extends Activity {
private ListView listView1;

@SuppressLint("NewApi")

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_scorecard);


    CardRow scoreCard_data[] = new CardRow[]
    {
        new CardRow(0),
        new CardRow(1),
        new CardRow(2),
        new CardRow(3)
    };

    CardRowAdapter adapter = new CardRowAdapter(this, 
            R.layout.activity_display_scorecard_row, scoreCard_data);


    listView1 = (ListView)findViewById(R.id.listView1);

    View header = (View)getLayoutInflater().inflate(R.layout.activity_display_scorecard_header, null);
    listView1.addHeaderView(header);

    listView1.setAdapter(adapter);

  }

/** Called when the user Selects a scorecard row */
public void displayScore(View view) {
    String item = ((TextView)view).getText().toString();
    Toast.makeText(getApplicationContext(), "ABC" + item, Toast.LENGTH_LONG).show();
    Intent intent = new Intent(this, DisplayScore.class);
    startActivity(intent);
}    


}
4

0 回答 0