2016-04-01 26 views
0

Hellow私はCardViewの中でListViewを実装しましたが、私が得た問題はCardViewがリスト項目を追加する際に拡張していないことです。誰も私を助けることができる、どのように問題をスローする?私はstackoverflowの上の別の記事を経てきたが、溶液:(私のコードを見つけることができない、これはListView CardViewの内部に全長が表示されない

public class EmploymentHistoryAdapter extends BaseAdapter { 
public ArrayList<EmploymentHistory> mEmploymentHistories; 
private Context context; 

public EmploymentHistoryAdapter(ArrayList<EmploymentHistory> mEmploymentHistories, Context context) { 
    this.mEmploymentHistories = mEmploymentHistories; 
    this.context = context; 
} 

@Override 
public int getCount() { 
    return mEmploymentHistories.size(); 
} 

@Override 
public Object getItem(int position) { 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = null; 
    EmploymentHistory empHistory = mEmploymentHistories.get(position); 
    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = inflater.inflate(R.layout.list_employee_history_row, parent, false); 
    } else { 

     v = convertView; 

    } 
    TextView hospital = (TextView) v.findViewById(R.id.hospital); 
    TextView department = (TextView) v.findViewById(R.id.department); 
    TextView startDate = (TextView) v.findViewById(R.id.startDate); 
    TextView endDate = (TextView) v.findViewById(R.id.endDate); 

    TextView hospitalName = (TextView) v.findViewById(R.id.hospitalName); 
    hospitalName.setText(empHistory.getHospital()); 
    TextView departmentName = (TextView) v.findViewById(R.id.departmentName); 
    departmentName.setText(empHistory.getDepartment()); 
    TextView startDate1 = (TextView) v.findViewById(R.id.startDate1); 
    startDate1.setText(empHistory.getStartDate()); 
    TextView endDate1 = (TextView) v.findViewById(R.id.endDate1); 
    endDate1.setText(empHistory.getEndDate()); 

    hospital.setVisibility(View.VISIBLE); 
    department.setVisibility(View.VISIBLE); 
    startDate.setVisibility(View.VISIBLE); 
    endDate.setVisibility(View.VISIBLE); 

    return v; 
} 

}

//私は人口これは私のリストビューアダプタクラスです

//下回っていますリストビュー

private void populateEmploymentHistoryList() { 
    listEmployeeHistory = (ListView) findViewById(R.id.listEmployeeHistory); 

    empHistory = dbHelper.getAllEmploymentHistory(); 
    employmentHistoryAdapter = new EmploymentHistoryAdapter(empHistory,this); 
    listEmployeeHistory.setAdapter(employmentHistoryAdapter); 
} 

//これは私がリストビューを追加私のレイアウトファイルであると私はlist_row

のためのカスタム設計を持っています
<android.support.v7.widget.CardView 
      android:id="@+id/employmentHistoryCard" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/card_margin" 
      android:layout_marginLeft="@dimen/card_margin" 
      android:layout_marginRight="@dimen/card_margin"> 

      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 

       <TextView 
        android:id="@+id/employmentHistory" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_centerHorizontal="true" 
        android:background="#E0E0E0" 
        android:gravity="center" 
        android:text="Employment History" 
        android:textAppearance="@style/TextAppearance.AppCompat.Title" 
        android:textColor="#4A148C" /> 

       <TextView 
        android:id="@+id/addEmployment" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@+id/employmentHistory" 
        android:layout_marginTop="15dp" 
        android:background="?attr/selectableItemBackground" 
        android:clickable="true" 
        android:drawableLeft="@drawable/ic_add" 
        android:drawablePadding="20dp" 
        android:drawableStart="@drawable/ic_add" 
        android:paddingLeft="30dp" 
        android:text="Add Employment" 
        android:textColor="#0e89d0" /> 

       <ListView 
        android:id="@+id/listEmployeeHistory" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@+id/addEmployment"> 

       </ListView> 

      </RelativeLayout> 
     </android.support.v7.widget.CardView> 

答えて

1

xmlコードでListViewの高さを指定する必要があります。 WRAP_CONTENTは、データが膨らんだときにListViewを拡張しません。 200dpのような高さを指定してください。

+0

これは動作しますが、ケースが異なります。別のユーザーには同じリスト行はありません。リスト項目の数が限られている場合、答えは機能します。 –

+0

私に他の効果的な解決策を教えてもらえますか?これは私のために働いていない –

+0

あなたは1つのことをすることができます。 RecyclerViewの各項目の要件に応じて、高さを動的に設定します。このようにして、ListViewはRecyclerViewの各項目の要件に従って高さを持ちます。 –

関連する問題