2013-06-29 214 views
0

我看不到添加到列表視圖的行,並且想知道它是否與我的佈局或ListViewAdapter有關。在調試中,我可以看到我的數組充滿了傳遞給我的ArrayList playerList的數據,並且我看到了Toast中的數據,但屏幕上沒有顯示。 MainActivity XML:Android自定義行佈局不在列表視圖中顯示

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/txtV_battingOrder_Title" 
     android:textSize="20sp" /> 

    <Button 
     android:id="@+id/button1" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/btn_AddButton_title" /> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.89" > 
    </ListView> 

</LinearLayout> 

新行佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@android:color/transparent" 
    android:padding="5dp" > 

    <TextView 
     android:id="@+id/txtV_player_input_position_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="21dp" 
     android:width="180dp" /> 

    <Button 
     android:id="@+id/btn_Edit_Title" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="@dimen/btn_edit_player_width" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/txtV_player_input_position_title" 
     android:layout_alignBottom="@+id/txtV_player_input_position_title" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="14dp" 
     android:padding="3dp" 
     android:text="@string/bnt_Edit_title" /> 

</RelativeLayout> 

定製ListViewAdapter

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 

public class CustomListViewAdapter extends BaseAdapter 
{ 
    LayoutInflater inflater; 
    List<String> playerList; 

    public CustomListViewAdapter(Activity context, List<String> playerList) { 
     super(); 

     this.playerList = playerList; 
     this.inflater =  (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return playerList.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    static class ViewHolder { 
     public TextView text; 
     public Button edit; 
    } 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     String player = playerList.get(position); 
     View vi=convertView; 

     if(convertView==null) 
      vi = inflater.inflate(R.layout.new_player_view, null); 
      ViewHolder holder = new ViewHolder(); 
//  assign components from new_player_view 
//  TextView playerInfo = (TextView)vi.findViewById(R.id.txtV_player_input_position_title); 
     holder.text = (TextView)vi.findViewById(R.id.txtV_player_input_position_title); 
     holder.edit = (Button)vi.findViewById(R.id.btn_Edit_Title); 
//  Button editButton = (Button) vi.findViewById(R.id.btn_Edit_Title); 
     holder.edit.setOnClickListener(MainActivity.editPlayerButtonListener); 
     holder.text.setText(player); 
     //playerInfo.setText("this is a test"); 
     vi.setTag(holder); 

     return vi; 
    } 
+1

要擴展哪種適配器? – Blackbelt

+0

公共類CustomListViewAdapter擴展BaseAdapter { – user2533762

+1

發佈整個適配器 – Blackbelt

回答

1

首先,您使用的是您的xml太多的重量屬性..你應該明智地使用它,我不知道爲什麼RelativeLayoutweight 1,但無論如何,我認爲你可能會遇到的問題之一荷蘭國際集團:

  • 確保getCount()返回> 0
  • 確保您使用此方法做充氣:inflater.inflate(R.layout.new_player_view, parent, false);
  • 改變該行佈局的follwing:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:background="@android:color/transparent" 
        android:padding="5dp" > 
    
        <TextView 
         android:id="@+id/txtV_player_input_position_title" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignParentLeft="true" 
         android:layout_alignParentTop="true" 
         android:layout_marginLeft="25dp"/> 
    
        <Button 
         android:id="@+id/btn_Edit_Title" 
         style="?android:attr/buttonStyleSmall" 
         android:layout_width="@dimen/btn_edit_player_width" 
         android:layout_height="wrap_content" 
         android:layout_alignParentRight="true" 
         android:layout_marginRight="14dp" 
         android:padding="3dp" 
         android:text="@string/bnt_Edit_title" /> 
    

而主佈局ListView到:

<ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

我希望事情會幫助你,否則,請發表適配器的全部代碼。

編輯:

請嘗試看看ViewHolder模式實現的this例如,工作正常,它應該幫助你實現你的好。

+0

我嘗試了所有更改。仍然是相同的輸出(沒有任何可見的)我在那裏從我以前的嘗試在同一個項目中增加了一個表格行到tablelayout(我認爲)的權重。我一直試圖讓這個工作很長一段時間。 – user2533762

+0

我更新了我的答案,你確定getCount()是> 0嗎?或者你也可以看到屏幕上的按鈕btn_AddButton_title?由於您使用的適配器在我看來似乎很好.. – Cata

+0

我從您建議的tut實施了對適配器的更改。它沒有改變輸出,但它給了我一個想法,在我的mainActivity中創建一個循環,以添加到我的列表和成功!我的列表顯示了所有添加的項目。現在我只需要弄清楚爲什麼。但我正在慢慢解決這個問題。我感謝您的幫助。在我創建onCreate循環之前 - 沒有按鈕沒有出現。 – user2533762

1

您已將layout_weight設置爲0.89,但未設置父佈局的weightSum。爲您的母公司LinearLayout設置android:weightSum = "1"

相關問題