gpt4 book ai didi

java - Android - GridView setSelection 不工作

转载 作者:行者123 更新时间:2023-11-30 11:15:39 26 4
gpt4 key购买 nike

目前正在为此项目使用带有 fragment 设置的标签栏/viewpager。 fragment 2 包含一个 GridView 。在应用程序启动时,我试图默认选择一个 gridview 单元格 - 但无论我做什么,它都不会“选择”。我开始怀疑这是不是因为在尝试进行选择时,gridview 不在屏幕上(viewpager 的页面/fragment 2)。

我正在做的是在 GridViewAdapter 的 getView 方法最初完成后(我将位置与可能的单元格总数进行比较以确定这一点)我触发一个监听器消息以选择 GridView 中的默认单元格。我这样做是为了 (a) 确保我尝试选择的单元格是非空的,并且 (b) 我想知道 getView 方法是否以某种方式重置了选择。

public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;

// * Other code that sets up the view

if (listener!=null) {
if ((list.size()-1)==position) {
Log.d(TAG, "Today position set: " + todayPosition);
listener.todayPositionFound(todayPosition);
}
} else {
Log.d(TAG, "LISTENER IS NULL");
}

return row;
}

然后……

public void todayPositionFound(final int position) {
// * ------------------------
// * On startup, select today
// * ------------------------
mCurrentlySelectedDate = DateHelper.todayAsString();
Log.d(TAG, "Todays Position Found: " + position);
View v = calendarView.getChildAt(position);
if (v!=null) {
Log.d(TAG, "V not NULL - SELECTING");
v.setSelected(true);
}

Log.d(TAG, "SELECTED? " + calendarView.getSelectedItemPosition());
}

除了随后未选择 View 这一事实外,所有这些都没有问题。此外,当我 getSelectedItemPosition 它返回 -1 ... 即使我只是“选择”位置 16。对此有任何想法将不胜感激。谢谢!

最佳答案

为了让它工作,我使用了 Handler 和 Runnable:

    public void todayPositionFound(final int position) {
Handler h = new Handler();
Runnable r =new Runnable() {
public void run() {
View v = calendarView.getChildAt(position);
if (v!=null) {
v.setSelected(true);
}
}
};
h.postDelayed(r, 500);
}

如果有人有更好的解决方案,请告诉我。谢谢!

关于java - Android - GridView setSelection 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25270000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com