2011-12-22 48 views
1

我試圖通過將第二個textview的「可見」更改爲「可見」來更新列表視圖中的單個行(兩個textview)。更新列表視圖中的單個行以顯示隱藏的文本視圖

下面是自定義佈局的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/userlistlayout" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#000000"/> 
    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" android:visibility="gone"/> 

我使用的是arrayadapter將數據從到ListView字符串[]結合。這是完美的。我遇到問題的地方是將更改推回屏幕。

這裏是測試代碼,我有我的陣列適配器和嘗試設置可見性在單行的第二個textview。

searchResults = (ListView) findViewById(R.id.listView1);  
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.userlist, R.id.textView1,names); 

searchResults.setAdapter(adapter); 
//all the code above this point works perfectly to populate the listview (textview1) 
with the names passed in from the names string[]      

LinearLayout hold = (LinearLayout) adapter.getView(2, null, null); 
TextView hold2 = (TextView) hold.findViewById(R.id.textView2); 
hold2.setVisibility(TextView.VISIBLE); 

adapter.notifyDataSetChanged(); 

searchResults.invalidateViews(); 

此代碼不拋出任何類型的錯誤,但是,我沒有得到的列表視圖任何更新。我不知道我在做什麼錯,或者我缺少什麼步驟來獲取對hold2進行的可見性更改,將其推回到適配器/列表視圖中,並在屏幕上更新,從而使該特定行上的第二個textview可見。

一旦我得到這個工作,我想觸發它​​onclick。

任何幫助將不勝感激。

回答

0

它很晚但這裏是我的答案;

在你的代碼中,你只是在oncreate中刷新一次。但你有監聽用戶對所有的時間,這樣你就可以做到這一點

listview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       final int position, long id) { 

      //here 

     } 
    }); 

現在你可以使用adapter.notifyDataSetChanged();在點擊。

,但我認爲你應該檢查這些帖子

this

that

也有不同的解決方案,我們在全球的適配器的使用動畫

public View selectedView ,previousView ; 
    public Animation fadeIn , fadeOut; 

在適配器的getview中

try { 
       if (previousView != v){        
        Animation b = AnimationUtils.loadAnimation(context, R.anim.fadein); 
        b.setDuration(177); 
        b.setFillAfter(true); 
        previousView.startAnimation(b); 
        previousView.findViewById(R.id.llTicketViewOnClickContainer).setVisibility(View.GONE); 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

//..... some other code 




//just before closing of get view 
previousView =v 
} 
相關問題