2012-12-07 160 views
2

我有一個列表視圖,它由兩個來自單獨佈局文件的文本視圖組成。我使用BaseAdapter從JSON文件構建列表。在列表視圖中更改文本視圖的可見性

我想第一個textview(標題)是可點擊的,如果點擊它顯示第二個textview(文本),如果再次點擊它隱藏它。

當我使用onClickandroid:onClick="ClText")時出現錯誤。我想我應該使用一些onClickListener,但由於我是Android新手,我不太清楚如何使用它。

有人可以幫我拿出代碼嗎?

+0

只使用onClickListener的代碼,因爲onclick屬性會導致許多問題 – sam

+0

好了,但後來我怎麼找出正確的看法?由於ListView中的所有視圖都具有相同的ID(mTxtvCaption和mTxtvText),因此我需要它確定已被單擊的正確mTxtvCaption並使右側的mTxtvText可見 – Tino

+0

@Tino,您需要確保爲文本視圖提供唯一的ID 。 –

回答

1

你只需要設置onClickListener在您的適配器類的getView方法延伸BaseAdapter的第一個項目。這裏有一個例子來說明你想要做什麼。

public class CustomAdapter extends BaseAdapter{ 
    private ArrayList<Thing> mThingArray; 

    public CustomAdapter(ArrayList<Thing> thingArray) { 
     mThingArray = thingArray; 
    } 

    // Get the data item associated with the specified position in the data set. 
    @Override 
    public Object getItem(int position) { 
     return thingArray.get(position); 
    } 

    // Get a View that displays the data at the specified position in the data set. 
    // You can either create a View manually or inflate it from an XML layout file. 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if(convertView == null){ 
      // LayoutInflater class is used to instantiate layout XML file into its corresponding View objects. 
      LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
      convertView = layoutInflater.inflate(R.layout.one_of_list, null); 
     } 

     TextView captionTextView = (TextView) convertView.findViewById(R.id.caption); 
     TextView txt2 = (TextView)findViewById(R.id.text); 

     captionTextView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(txt2.getVisibility() == View.INVISIBLE){ 
      txt2.setVisibility(View.VISIBLE); 
     } else { 
      txt2.setVisibility(View.INVISIBLE); 
     } 
     } 
    }); 

     return convertView; 
    } 
} 
+0

這個伎倆!非常感謝! – Tino

+0

很高興能幫到你!不要忘記接受:) – mattgmg1990

0

下面是關於如何使用與Java點擊收聽一個例子:

TextView txt = (TextView)findViewById(R.id.TextView1); 
TextView txt2 = (TextView)findViewById(R.id.TextView2); 
txt.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     txt.setVisibility(View.GONE); 
     txt2.setVisibility(View.VISIBLE); 
    } 
}); 

老實說,雖然,而不是改變不同textViews的知名度,你爲什麼不只是改變TextView的文本?這會更簡單,並且不需要多個TextView。

+0

謝謝!我到達那裏:)我必須使用多個文字瀏覽,因爲JSON包含很多與文字匹配的標題。在啓動時,應用程序只需顯示標題,然後點擊匹配的文本即可顯示。 – Tino

0

如果你只是想在兩個textview之間切換,你可以簡單地使用一個ViewSwitcher。它允許你在視圖之間切換。你只需要調用nextView()方法,並且這種方法是循環的,所以你可以無休止地調用nextView()

你將能夠改變顯示的視圖。

然後你就可以在同一onClickListener添加到這些到TextView的寫是這樣的:

TextView txt = (TextView)findViewById(R.id.TextView1); 

txt.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
     viewSwitcher.nextView(); 
} 
}); 
相關問題