2016-11-10 100 views
0

我正在使用自定義適配器,並且getView方法有問題。這裏是我的代碼 -如何將多個textView添加到列表查看

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View vi = convertView; 
     if (vi == null) 
      vi = inflater.inflate(R.layout.list_item, null); 
    if(position==0){ 
     TextView text1 = (TextView) vi.findViewById(R.id.text1); 
     text1.setText(data[position]); 
    }else if(position==1){ 
     TextView text2 = (TextView) vi.findViewById(R.id.text2); 
     text2.setText(data[position]); 
     } 
     return vi; 
    } 

這裏是XML文件 -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 
<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAlignment="center" 
    android:background="@android:color/black" 
    android:textColor="@android:color/white" 
    android:id="@+id/text1" /> 
<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAlignment="center" 
    android:background="@android:color/green" 
    android:textColor="@android:color/white" 
    android:id="@+id/text2" /> 


</LinearLayout> 

其實我的指令是否工作,但其他空白的TextView也出現吧。 假設如果位置== 0,則應顯示「@ + id/text1」,但「@ + id/text2」也會顯示爲不帶文本。 我只想要顯示一個文本視圖,而不是另一個。怎麼做?

+1

您可以動態設置視圖的可見性。如果你想要顯示它,可以使用'text2.setVisibility(View.VISIBLE)'或者如果你想隱藏它,使用'text2.setVisibility(View.GONE)'。 – zgc7009

+0

非常感謝。 –

回答

1

position是適配器中當前顯示的項目的索引,而不是顯示哪個TextView。

適配器的每一行都有兩個TextView,我假設你有一些字符串需要在兩個視圖中顯示。

作爲一個例子,試試這個。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    String item = String.valueOf(data[position]); 

    View v = convertView; 
    if (v == null) { 
     v = inflater.inflate(R.layout.list_item, null); 
    } 

    TextView text1 = (TextView) v.findViewById(R.id.text1); 
    TextView text2 = (TextView) v.findViewById(R.id.text2); 

    text1.setText("1: " + item); 
    text2.setText("2: " + item); 

    return v; 
} 

我想只能顯示一個TextView的,而不是其他的。怎麼做?

那麼它聽起來就像你不希望在一個佈局2個TextViews ...

如果你的問題是字面意思是「如何顯示在ListView不止一個TextView的」,那麼你應該把更多的比這個數組中的一個值要多。

+0

我的問題是當這個[text1.setText(「1:」+ item);]被執行,然後text2也顯示沒有文字。 –

+0

這不應該發生在我的答案 –