2014-04-11 45 views
0

我想获取listview的子项并将其两个隐藏元素的可见性设置为true。 我的代码是无法对listView的子进行操作

canvasListView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       /* 
       joinCanvasBtn.setEnabled(true); 
       joinCanvasPasswordTxt.setEnabled(true);*/ 
       Log.d(TAG,"Selected positon : "+position); 
       int index = canvasListView.getFirstVisiblePosition() + position; 
       View v = canvasListView.getChildAt(index); 
       if(v!=null) { 
        joinCanvasBtn = (Button) v.findViewById(R.id.joinCanvasBtn); 
        canvasPassword = (EditText) v.findViewById(R.id.joinCanvasPasswordTxt); 

        joinCanvasBtn.setVisibility(View.VISIBLE); 
        joinCanvasPasswordTxt.setVisibility(View.VISIBLE); 

       } 
       else { 
        Log.d(TAG,"Unable to find the selected child of listView"); 
       } 


      } 
     }); 

但这不是它的工作给我空指针异常。我的布局文件如下。基本上我想显示密码和加入按钮,每当用户点击该行。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 

    android:padding="6dip"> 
    <!-- Item Name --> 

    <TextView 
     android:id="@+id/canvasName" 
     android:height="100dp" 
     /> 
    <TextView 
     android:id="@+id/canvasCreator" 
     android:text="TextView" /> 
    <EditText 
     android:id="@+id/joinCanvasPasswordTxt" 
      android:visibility="invisible" 
     /> 
    <Button 
     android:id="@+id/joinCanvasBtn" 
     android:text="Join" 
     android:visibility="invisible" 
     /> 


</LinearLayout> 

请帮我找到解决办法

+0

如果(指数> = 0){.. setVisibility真正的代码。 ..)}其他{Log.d(TAG,“请选择”);}可以帮助 –

+0

,不会帮助我试过 – nikhilbhr

回答

0

尝试写的

int index = position - canvasListView.getFirstVisiblePosition(); 

代替

int index = canvasListView.getFirstVisiblePosition() + position; 
+0

你的方法也是不工作 – nikhilbhr