0

我有一个ListView包含数组中的项目,即String[] statesList = {"Adult 1", "Adult 2","Adult 3","Child 1","Child 2","Child 1","Child 2","Child 2"};

现在我想隐藏一个TextView如果该项目是在成人之外单击的。

这是我为填充列表视图中的数据而编写的函数

protected void onCreate(Bundle savedInstanceState) {
    showPassengerListView();
}


    private void showPassengerListView() {


            String[]  passengerList ={"Adult 1", "Adult 2","Adult 3","Child 1","Child 2","Child 1","Child 2","Child 2"};
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, passengerList);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
if((passengerList[position].contains("Child"))|| (passengerList[position].contains("Infant"))){
                    dateofBirth.setVisibility(View.VISIBLE);
                }else{
                    dateofBirth.setVisibility(View.GONE);
                }

                }
        });
          **passengerInformationPopup()**
    }

public void passengerInformationPopup() {
        final Dialog dialog= new Dialog(IweenBookingPage.this,R.style.Dialog_Fullscreen);
        dialog.setContentView(R.layout.passenger_details_dialog); 
        String[] tittlearray ={"Mr.","Mrs.","Ms"};
        Spinner tittleSpinner = (Spinner) dialog.findViewById(R.id.Tittle);
         dateofBirth = (TextView)dialog.findViewById(R.id.dateofBirth);
        dateofBirth.setClickable(true);

        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, tittlearray); 

        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        tittleSpinner.setAdapter(dataAdapter);
        dialog.show();
    }

我得到了例外:

08-16 15:51:55.727: E/AndroidRuntime(15553): FATAL EXCEPTION: main
08-16 15:51:55.727: E/AndroidRuntime(15553): java.lang.NullPointerException
08-16 15:51:55.727: E/AndroidRuntime(15553):    at com.android.iweentravel.Book$5.onItemClick(Book.java:184)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at android.widget.AdapterView.performItemClick(AdapterView.java:298)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at android.widget.AbsListView.performItemClick(AbsListView.java:1114)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2937)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at android.widget.AbsListView$1.run(AbsListView.java:3695)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at android.os.Handler.handleCallback(Handler.java:615)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at android.os.Looper.loop(Looper.java:153)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at android.app.ActivityThread.main(ActivityThread.java:4987)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at java.lang.reflect.Method.invokeNative(Native Method)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at java.lang.reflect.Method.invoke(Method.java:511)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
08-16 15:51:55.727: E/AndroidRuntime(15553):    at dalvik.system.NativeStart.main(Native Method)

如何检查从 ListView 中单击了哪个项目?根据单击的项目,我必须显示/隐藏 TextView 。主要问题是如何识别。这些项目在 ListView 中将是动态的。但有成人、儿童、婴儿等。

4

2 回答 2

1

您可以像这样隐藏 TextView

TextView.setVisibility(View.GONE) 

或者

TextView.setVisibility(View.INVISIBLE) 

取决于你想做什么。

在 onItemClick() 方法中识别项目的简单方法是:

listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 // for example like that
                 if(passengerlist[position].contains("Adult)") // do something

                 // or like that
                 TextView tv = (TextView) view.findViewById(R.id.text1);

                 if(tv.getText().toString().contains("Adult)") // do something
            }
        });
于 2013-08-16T09:59:56.900 回答
0

在你的onItemClick尝试中是这样的:

TextView tv = (TextView) view.findViewById(R.id.yourTextViewId);
tv.setVisibility(View.GONE);
于 2013-08-16T10:02:52.557 回答