Sau khi kiểm tra nhiều giải pháp không giải pháp nào được giải quyết vấn đề của tôi với không gian trống nên tôi đã quyết định đưa ra giải pháp của mình.
Tôi có hai vấn đề chính: 1) Tôi đã có một không gian trống vì quan điểm mà tôi đặt khả năng hiển thị của nó là 2) Tôi cũng đã chia sẻHình ảnh 12dp, ngay cả khi tôi gặp vấn đề đầu tiên được giải quyết. chiều cao chia cố định của listview
giải pháp:
1.1) tôi đã thêm một boolean số liệu của danh sách, thông báo cho các bộ chuyển đổi nào trong mục được bỏ qua
1.2) Tôi tạo ra một bố trí trống để mô phỏng một "bỏ qua mục"
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dp"
android:layout_height="0dp"/>
1,3) Tôi có một số loại quan điểm trong listview của tôi, mục đã chọn, mục thường xuyên và bây giờ bỏ qua mục
public class AdvancedTestAdapter extends BaseAdapter
{
private static final int REGULAR_STEP = 0;
private static final int SELECTED_STEP = 1;
private static final int SKIPPED_STEP = 2;
private static final int TYPE_MAX_COUNT = 3;
private List<AdvancedTestData> _data;
private Context _context;
private Typeface _fontTypeFace;
public AdvancedTestAdapter(Context context, List<AdvancedTestData> data)
{
_context = context;
_data = data;
_fontTypeFace = Typeface.createFromAsset(_context.getResources().getAssets(), Consts.Fonts.UniversLTStdBoldCn);
}
@Override
public AdvancedTestData getItem(int position)
{
return _data.get(position);
}
@Override
public int getCount()
{
return _data.size();
}
@Override
public long getItemId(int position)
{
return 0;
}
@Override
public int getItemViewType(int position)
{
AdvancedTestData step = getItem(position);
if(step.isSkipped())
{
return SKIPPED_STEP;
}
return _data.get(position).isStepSelected() ? SELECTED_STEP : REGULAR_STEP;
}
@Override
public int getViewTypeCount()
{
return TYPE_MAX_COUNT;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
RegularViewHolder regHolder;
SelectedViewHolder selectHolder;
AdvancedTestData item = getItem(position);
int currentStepType = getItemViewType(position);
switch (currentStepType)
{
case SKIPPED_STEP:
convertView = LayoutInflater.from(_context).inflate(R.layout.skipped_item_layout, parent, false);
break;
case REGULAR_STEP:
if (convertView == null)
{
regHolder = new RegularViewHolder();
convertView = LayoutInflater.from(_context).inflate(R.layout.advanced_test_layout, parent, false);
regHolder._regTestUpperHeader = (TextView) convertView.findViewById(R.id.advanced_test_upper_name);
regHolder._regTestLowerHeader = (TextView) convertView.findViewById(R.id.advanced_test_lower_name);
regHolder._regTestImage = (ImageView) convertView.findViewById(R.id.advanced_test_image);
regHolder._regTestWithoutLowerHeader = (TextView) convertView.findViewById(R.id.step_without_lower_header);
regHolder._regTestUpperHeader.setTypeface(_fontTypeFace);
regHolder._regTestLowerHeader.setTypeface(_fontTypeFace);
regHolder._regTestWithoutLowerHeader.setTypeface(_fontTypeFace);
convertView.setTag(regHolder);
}
else
{
regHolder = (RegularViewHolder) convertView.getTag();
}
String upperHeader = item.getTestUpperHeader();
String lowerHeader = item.getTestLowerHeader();
if(lowerHeader.isEmpty())
{
regHolder._regTestUpperHeader.setVisibility(View.GONE);
regHolder._regTestLowerHeader.setVisibility(View.GONE);
regHolder._regTestWithoutLowerHeader.setVisibility(View.VISIBLE);
regHolder._regTestWithoutLowerHeader.setText(upperHeader);
}
else
{
regHolder._regTestUpperHeader.setVisibility(View.VISIBLE);
regHolder._regTestLowerHeader.setVisibility(View.VISIBLE);
regHolder._regTestWithoutLowerHeader.setVisibility(View.GONE);
regHolder._regTestUpperHeader.setText(upperHeader);
regHolder._regTestLowerHeader.setText(lowerHeader);
}
regHolder._regTestImage.setBackgroundResource(item.getResourceId());
break;
case SELECTED_STEP:
if (convertView == null)
{
selectHolder = new SelectedViewHolder();
convertView = LayoutInflater.from(_context).inflate(R.layout.advanced_selected_step_layout, parent, false);
selectHolder._selectedTestName = (TextView) convertView.findViewById(R.id.selected_header_text);
selectHolder._selectedTestDesc = (TextView) convertView.findViewById(R.id.selected_desc_text);
selectHolder._selectedPreFinishControllers = (RelativeLayout) convertView.findViewById(R.id.prefinish_step_controllers);
selectHolder._selectedFvEndControllers = (RelativeLayout) convertView.findViewById(R.id.advanced_fv_controllers);
selectHolder._selectedNvEndControllers = (RelativeLayout) convertView.findViewById(R.id.advanced_nv_controllers);
convertView.setTag(selectHolder);
}
else
{
selectHolder = (SelectedViewHolder) convertView.getTag();
}
selectHolder._selectedPreFinishControllers.setVisibility(View.INVISIBLE);
selectHolder._selectedFvEndControllers.setVisibility(View.INVISIBLE);
selectHolder._selectedNvEndControllers.setVisibility(View.INVISIBLE);
int testIndex = item.getTestIndex();
ADVANCED_QUICK_TEST_TESPS currentStep = ADVANCED_QUICK_TEST_TESPS.valueOf(testIndex);
//show action buttons in each step in advanced mode
switch (currentStep)
{
case QUESTIONS://nothing to show
break;
case RIGHT_VERIFICATION:
case LEFT_VERIFICATION:
case BINOCULAR_BALANCE:
case SPHERE_VERIFICATION:
case ADD_VERIFICATION:
if(item.isStepPreFinished())
{
selectHolder._selectedPreFinishControllers.setVisibility(View.VISIBLE);
}
break;
case RIGHT_VA:
case LEFT_VA:
case BINO_VA:
selectHolder._selectedPreFinishControllers.setVisibility(View.VISIBLE);
break;
case FV_DONE:
selectHolder._selectedFvEndControllers.setVisibility(View.VISIBLE);
break;
case FULL_EXAM_DONE:
selectHolder._selectedNvEndControllers.setVisibility(View.VISIBLE);
break;
}
String textHeader = String.format("%s\n%s", item.getTestUpperHeader(),item.getTestLowerHeader());
selectHolder._selectedTestName.setText(textHeader);
selectHolder._selectedTestDesc.setText(item.getTestDescription());
break;
}
return convertView;
}
public void setData(List<AdvancedTestData> data)
{
_data = data;
notifyDataSetChanged();
}
public static class RegularViewHolder
{
public TextView _regTestWithoutLowerHeader;
public TextView _regTestUpperHeader;
public TextView _regTestLowerHeader;
public ImageView _regTestImage;
}
public static class SelectedViewHolder
{
public TextView _selectedTestName;
public TextView _selectedTestDesc;
public RelativeLayout _selectedPreFinishControllers;
public RelativeLayout _selectedFvEndControllers;
public RelativeLayout _selectedNvEndControllers;
}
chỉ
nếu mục bị bỏ qua bộ điều hợp thổi phồng sang bố cục trống như được hiển thị ở bước trước, tôi vẫn có vấn đề về chiều cao chia
2) Để sửa chiều cao bộ chia, tôi thay đổi chiều cao chia thành 0 thay vì 12dp, mỗi mục không bị bỏ qua Tôi đã thêm một bố cục khác nền trong suốt (màu divier trong trường hợp của tôi cần phải minh bạch) và thêm đệm đáy 12dp
ví dụ một trong các mục của tôi
<?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:background="@android:color/transparent"
android:orientation="vertical"
android:paddingBottom="12dp" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/quick_test_background_selector" >
<ImageView
android:id="@+id/advanced_test_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/done_step" />
<TextView
android:id="@+id/advanced_test_upper_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@id/advanced_test_image"
android:gravity="center_vertical"
android:text="ETAPE 1"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/advanced_test_lower_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/advanced_test_image"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@id/advanced_test_image"
android:gravity="center_vertical"
android:text="ETAPE 1"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/step_without_lower_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/advanced_test_image"
android:layout_alignTop="@id/advanced_test_image"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@id/advanced_test_image"
android:gravity="center_vertical"
android:text="123"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
</RelativeLayout>
</RelativeLayout>
có lẽ nó không thanh lịch nhưng giải pháp này làm việc cho tôi
Xin chúc mừng về giải pháp. Khi bạn có thể, hãy đảm bảo đánh dấu câu trả lời của bạn là 'được chấp nhận' để những người khác có thể học hỏi từ bạn thành công. Chúc mừng ~ –
không hoạt động cho phụ huynh điền. – Thushara