在ListItem上显示一个窗口

时间:2013-11-30 04:57:49

标签: android

我的Main Actitivy中有一个List Item,它包含本地File对象(自定义类):

public static ArrayList<localFile> inventoryItems = new ArrayList<localFile>();

我在主要活动中初始化了一个Dialog:

Dialog weaponDialog;

然后在创建方法中我做了这个:

Dialog weaponDialog = new Dialog(this);
    weaponDialog.setContentView(R.layout.weapon_info);

武器对话框的内容视图现在设置为以XML格式创建的自定义视图:

<TableLayout
    android:id="@+id/shipInfoView"
    android:layout_width="160dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/inv"
    android:background="@drawable/green_border_full"
    android:divider="#00000000"
    android:maxLength="40"
    android:padding="5dp"
    android:scrollHorizontally="false"
    android:textColor="@color/Green"
    android:textSize="12sp" >

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/itemName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textColor="@color/Green"
            android:textSize="12sp" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/plrLvl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="   Damage:"
            android:textColor="@color/Green"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/wpnDamage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textColor="@color/Green"
            android:textSize="12sp" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/wpnWeight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="   Weight:   "
            android:textColor="@color/Green"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/wpnWeightA"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textColor="@color/Green"
            android:textSize="12sp" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="   Rarity:"
            android:textColor="@color/Green"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/wpnRarity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0"
            android:textColor="@color/Green"
            android:textSize="12sp" />
    </TableRow>
</TableLayout>

所述listView有一个ItemClick Listener:

        inventoryList.setClickable(true);
    inventoryList
            .setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int position, long arg3) {
                    localFile file = (localFile) inventoryList
                            .getItemAtPosition(position);
                    showItem(file);
                }
            });
}

每次单击列表视图中的项目时,都会出现一个对话框,其中包含上面传递的文件中的信息:

    public void showItem(localFile file) {
    TextView wpnName = (TextView) weaponDialog.findViewById(R.id.itemName);
    TextView wpnDmg = (TextView) weaponDialog.findViewById(R.id.wpnDamage);
    TextView wpnWei = (TextView) weaponDialog.findViewById(R.id.wpnWeightA);
    TextView wpnRar = (TextView) weaponDialog.findViewById(R.id.wpnRarity);
    wpnName.setText(file.name);
    String sizeStr = String.valueOf(file.size);
    wpnDmg.setText(sizeStr);
    wpnWei.setText(sizeStr);
    weaponDialog.show();
}

每次按下列表视图中的项目时,我的show Item方法中都会出现空指针异常。这是由这一行引起的:

weaponDialog.show();

有人可以帮助我吗?

感谢您的时间:)

1 个答案:

答案 0 :(得分:1)

您将对话框声明为全局但同样具有相同的变量名称,您可以在本地对话框进行初始化。因此全局变量未初始化为null。

Dialog weaponDialog = new Dialog(this);

所以在这一行中删除Dialog这里它是一个局部变量.so并将其改为

weaponDialog = new Dialog(this);

并尝试设置对话框文本..