【问题标题】:How to get last ListView item position如何获取最后一个 ListView 项目位置
【发布时间】:2013-04-11 12:34:49
【问题描述】:

我用单选按钮创建了一个列表视图。列表视图如下图所示:

而我的 getView 是:

public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    PaymentData rowItem = getItem(position);
    LayoutInflater mInflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(
                com.android.paypal.homeactivity.R.layout.list_item, null);
        holder = new ViewHolder();
        holder.radioBtn = (RadioButton) convertView
                .findViewById(com.android.paypal.homeactivity.R.id.rdb_payment_method);
        holder.btPaymentMethod = (Button) convertView
                .findViewById(com.android.paypal.homeactivity.R.id.bt_item_event);
        convertView.setTag(holder);
    } else
        holder = (ViewHolder) convertView.getTag();

    holder.radioBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if ((position != mSelectedPosition) && (mSelectedRB != null)) {
                mSelectedRB.setChecked(false);
            }

            mSelectedPosition = position;
            mSelectedRB = (RadioButton) v;
        }
    });

    if (mSelectedPosition != position) {
        holder.radioBtn.setChecked(false);
    } else {
        holder.radioBtn.setChecked(true);
        if (mSelectedRB != null && holder.radioBtn != mSelectedRB) {
            mSelectedRB = holder.radioBtn;
        }
    }

    holder.radioBtn.setText(rowItem.getRdbText());
    holder.btPaymentMethod.setText(rowItem.getBtText());
    return convertView;

}

我想在屏幕第一个出现时自动检查最后一个单选按钮。我怎样才能做到这一点。

【问题讨论】:

  • 您的意思是列表中的最后一个单选按钮?
  • 是的。请帮帮我,我想要这个尽快。
  • 最后位置与上一个可见位置不同,请明确 this..last position 或 lastVisible 位置

标签: android listview radio-button


【解决方案1】:

持有一个布尔值来表示用户自己是否选择了任何东西。让布尔值为userSelected = false;

现在你可以在getView()

if(position==getCount()-1 && userSelected==false)
    holder.radioBtn.setChecked(true);
else
    holder.radioBtn.setChecked(false);

在onItemClick中,当用户自己做出选择后,只需设置userSelected=true;

【讨论】:

  • 正是我想要的。谢谢阿斯温库马尔。
  • 正确答案
【解决方案2】:

您的最后一个位置是 int lastpostion = getcount() -1;,其中 getcount() 是 adpater 类中的一个方法

【讨论】:

  • 一开始我想检查最后一个位置。这是最后一个位置,然后我想要单选按钮 setChecked(true)。
【解决方案3】:

使用这个方法

mListView.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {

            if (scrollState == onScroll) {
                if (mListView.getLastVisiblePosition() == adapter.getCount() - 1) {
                    //Update new data here
                                            // and then, notify your adapter 
                                            adapter.notifyDataSetChanged();
                }
            }
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

        }

    });

【讨论】:

    猜你喜欢
    • 2019-05-04
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2015-05-18
    相关资源
    最近更新 更多