【问题标题】:Missing first item of ListView after screen gets full屏幕变满后缺少 ListView 的第一项
【发布时间】:2017-12-30 19:46:16
【问题描述】:

在需要滚动时屏幕填满行后,列表视图的第一项会丢失。直到第 7 或第 8 个项目,第一行是可见的,但在第 8 行之后它会丢失。滚动开始后,除了第一行丢失外,一切都正常了。下面是寻求帮助的代码。

public class ProfileArrayAdapter extends ArrayAdapter<Results> {


private Context mContext;

public ProfileArrayAdapter(Context context, int resource, ArrayList<Results> resultsArrayList) {
    super(context, resource, resultsArrayList);
    this.mContext =context;
}


static class ViewHolder {
    TextView questionIdView;
    TextView testTypeView;
    TextView correctAnswerCountView;
    TextView wrongAnswerCountView;
    TextView emptyAnswerCountView;
    TextView testDateView;
    TextView successRateView;
}


@Override
public View getView(int position, View view, ViewGroup viewGroup) {
    View convertView = view;
    ViewHolder viewHolder;
    Results results = getItem(position);
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.overall_summary_template, viewGroup, false);
        viewHolder = new ViewHolder();
        viewHolder.questionIdView = (TextView) convertView.findViewById(R.id.overall_question_id);
        viewHolder.testTypeView = (TextView) convertView.findViewById(R.id.overall_test_type);
        viewHolder.correctAnswerCountView = (TextView) convertView.findViewById(R.id.overall_correct_answer);
        viewHolder.wrongAnswerCountView = (TextView) convertView.findViewById(R.id.overall_wrong_answer);
        viewHolder.emptyAnswerCountView = (TextView) convertView.findViewById(R.id.overall_empty_answer);
        viewHolder.testDateView = (TextView) convertView.findViewById(R.id.overall_test_date);
        viewHolder.successRateView = (TextView) convertView.findViewById(R.id.success_rate);
        convertView.setTag(viewHolder);

    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    String testId = " #" + results.getItemTestIdString();
    viewHolder.questionIdView.setText(testId);
    String testType = results.getItemTestType();
    viewHolder.testTypeView.setText(testType);
    String testDate = results.getItemTestDate();
    viewHolder.testDateView.setText(testDate);
    String wrongOnesText = mContext.getString(R.string.wrong_summary);
    String falseOnes = wrongOnesText + String.valueOf(results.getItemNumberOfFalseAnswers());
    viewHolder.wrongAnswerCountView.setText(falseOnes);
    String emptyOnesText = mContext.getString(R.string.empty_summary);
    String emptyOnes = emptyOnesText + String.valueOf(results.getItemNumberOfEmptyAnswers());
    viewHolder.emptyAnswerCountView.setText(emptyOnes);
    String correctOnesText = mContext.getString(R.string.correct_summary);
    String correctOnes = correctOnesText + String.valueOf(results.getItemNumberOfCorrectAnswers());
    viewHolder.correctAnswerCountView.setText(correctOnes);
    String successRate = "% " + results.getItemSuccessRate();
    viewHolder.successRateView.setText(successRate);
    return convertView;
}

}

【问题讨论】:

  • 请检查工具栏是否在列表视图的第一项上没有重叠。
  • 它会显示第一个项目,直到屏幕填满,所以如果问题出在工具栏上,我猜它不应该随时显示。但感谢您的回复。

标签: android listview arraylist android-arrayadapter custom-arrayadapter


【解决方案1】:

在适配器本身中重写getItemId()getItemViewType()两个方法..并使它们都返回默认的返回语句(位置)并检查。

【讨论】:

  • 不幸的是没有帮助,在第 8 行之后仍然是第 1 行。 @Override public long getItemId(int position) { return super.getItemId(position); } @Override public int getItemViewType(int position) { return super.getItemViewType(position); }
  • 请发截图
  • 要么减少行布局的高度..列表视图。(你给它一个固定的高度)如果它已经减少了..然后尝试`fit systemswindow`到列表视图的true
  • 非常感谢,我用的是constraintLayout,并且约束了底部。我将布局更改为LinearLayout,问题解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多