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つのことをすることができます。 RecyclerViewの各項目の要件に応じて、高さを動的に設定します。このようにして、ListViewはRecyclerViewの各項目の要件に従って高さを持ちます。 –