2016-11-10 37 views
0

カスタムアダプターを使用していますが、getViewメソッドに問題があります。ここ複数のtextViewをlistViewに追加する方法

@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にもそれが表示されます。 position == 0の場合、 "@ + id/text1"が表示されるはずですが、 "@ + id/text2"もテキストなしで表示されます。 1つのテキストビューのみを表示します。もう1つは表示しません。どうやってするか?

+1

ビューの表示を動的に設定できます。表示したい場合は 'text2.setVisibility(View.VISIBLE)'、それを隠したいときは 'text2.setVisibility(View.GONE)'を選択します。 – zgc7009

+0

ありがとうございました。 –

答えて

1

positionは現在表示されている項目のインデックスであり、どのTextViewが表示されているのかはわかりません。

アダプタの各行には2つの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を表示させたいです。どうやってするか?

あなたは1つのレイアウトで2 TextViewsを望んでいないようにあなたが質問した場合、それは...

の音は、あなたがより多くを置く必要があり、「リストビューで複数のTextViewを表示する方法」を文字通りです1つの値よりもdata配列になります。

+0

私の問題は、この[text1.setText( "1:" + item);]が実行された後、text2もテキストが表示されないことです。 –

+0

それは私の答えで起こらないはずです –

関連する問題