2011-09-16 34 views
0

我有一個主要活動,如:安卓:ListView控件與TextView的標題問題

public class TestActivity extends Activity{ 
    List<String> users; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.usersview); 
     showList(); 

    } 
    private void showList() { 
     users=new ArrayList<String>(); 
     users.add("User1"); 
     users.add("User2"); 
     users.add("User3"); 

     ListView lv=(ListView)findViewById(R.id.listv); 
//  TextView tv=(TextView)findViewById(R.id.welcomeMsg); 
//  lv.addHeaderView(tv); 
     lv.setAdapter(new ListArrAdapter(this, R.layout.userlist, users)); 
    } 

ArrayAdapter:

public class ListArrAdapter extends ArrayAdapter<String> { 
    private List<String> users; 
    private Context context; 
    private int listlayout; 

    public ListArrAdapter(Context context, int textViewResourceId, 
      List<String> users) { 
     super(context, textViewResourceId, users); 
     this.users = users; 
     listlayout = textViewResourceId; 
     this.context = context; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup viewGroup) { 
     String userName = users.get(position); 
     if (null == convertView) { 
      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(listlayout, null); 
     } 
     TextView firstName = (TextView) convertView 
       .findViewById(R.id.firstNameTv); 
     firstName.setText(userName); 
     return convertView; 
    } 
} 

usersview佈局:

<?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:text="@string/header" 
     android:id="@+id/welcomeMsg" 
     android:textSize="30dp" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"></TextView> 
    <ListView 
     android:layout_height="wrap_content" 
     android:id="@+id/listv" 
     android:layout_width="match_parent"></ListView> 
</LinearLayout> 

用戶列表佈局爲每個項目:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#EEFFEE" 
    android:orientation="vertical"> 
    <TextView 
     android:id="@+id/firstNameTv" 
     android:textSize="20dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"></TextView> 
</LinearLayout> 

我的問題是:

當我運行此代碼時只顯示歡迎消息(列表中的項目不顯示)。

當我取消對線

TextView tv=(TextView)findViewById(R.id.welcomeMsg); 
    lv.addHeaderView(tv); 
在測試活動

,我得到了線以下異常

09-16 19:45:10.680: ERROR/AndroidRuntime(31044): Caused by: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams 

lv.setAdapter(new ListArrAdapter(this, R.layout.userlist, users)); 

我想有消息顯示用戶的列表 - 頂部。但是我遇到了這些問題。問題在哪裏,解決方案是什麼。

+0

看起來像是由於「match_parent」引起的異常。 嘗試使用「wrap_content」。而不是「fill_parent」使用「wrap_content」行xml – Arslan

+0

我試過。仍然無解。 – gtiwari333

回答

1

在你的用戶視圖佈局 -

<TextView 
    android:text="@string/header" 
    android:id="@+id/welcomeMsg" 
    android:textSize="30dp" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"></TextView> 

更改佈局,WRAP_CONTENT。

我的猜測是textview覆蓋整個屏幕。因此名單依然不可見。

對於添加頭部您的列表視圖 -

TextView tv = new TextView(this); 
tv.setText("Header Text"); 
listView.addHeaderView(tv); 
+0

我試着改變佈局。但不是解決方案。標題文本視圖仍然顯示「@ + id/welcomeMsg」,即使我做了:TextView tv = new TextView(this); tv.setText(「Header Text」); – gtiwari333

0

這爲我工作。希望能幫助到你。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    > 

    <TextView 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_gravity="top" 
    /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
    > 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="top" 
     android:layout_marginTop="50dp" 
    /> 
    </LinearLayout> 
</FrameLayout>