我有以下子类用于更新gridview的设计行:
在gridview中加载数据以将滚动条位置保持在当前位置时,最简单的方法是什么?
public class TextAdapter : BaseAdapter
{
Context context;
List<string> Sources;
string res;
public TextAdapter(Context c, List<string> s)
{
context = c;
Sources = s;
}
public override int Count
{
get { return Sources.Count; }
}
public override Java.Lang.Object GetItem(int position)
{
return null;
}
public override long GetItemId(int position)
{
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public override View GetView(int position, View convertView, ViewGroup parent)
{
TextView textView;
if (convertView == null)
{
textView = new TextView(context);
textView.SetLines(6);
}
else
{
textView = (TextView)convertView;
}
textView.SetText(Sources[position], null);
return textView;
}
在gridview中加载数据以将滚动条位置保持在当前位置时,最简单的方法是什么?
网格视图:
<GridView
android:id="@+id/gvContagem"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:numColumns="1"
android:textStyle="bold"
android:layout_below="@+id/headerLabel"
android:layout_marginTop="33dp" />
.CS文件:
readonly JavaList<String> artigos = new JavaList<string>();
List<string> mItems = new List<string>();
GridView gvContagem = FindViewById<GridView>(Resource.Id.gvContagem);
sqliteConnection con = new SqliteConnection("Data Source = " + BaseDados);
con.Open();
artigos.Clear();
string stm = "SELECT Artigo, Descricao FROM Trend";
using (SqliteCommand cmd = new SqliteCommand(stm, con))
{
using (SqliteDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
artigos.Add(rdr.GetValue(0) + rdr.GetValue(1));
}
}
}
gvContagem.Adapter = new TextAdapter(this,artigos);
事实证明,我能够以相当少的精力制作一个工作样本。
尝试以下操作(添加两行代码,在创建新代码之前添加一行,在创建新代码之后添加一行TextAdapter
:
IParcelable gridViewState = gvContagem.OnSaveInstanceState(); // <-- save scroll position
gvContagem.Adapter = new TextAdapter(this, artigos);
gvContagem.OnRestoreInstanceState(gridViewState); // <-- Load scroll position
我已经测试了上面的方法并且可以工作,但是如果新数据集小于旧数据集,并且您在旧数据集上滚动到新数据集扩展的范围之外,那么新数据将滚动到末尾。换句话说,如果旧数据集有20个项目,新数据集有10个项目,并且您已滚动以使项目15位于底部,则在加载新的较小数据集时,将滚动至该项目10在底部。
顺便说一下,这里回答了一个有点重复的问题:通过“屏幕旋转”来保持GridView的滚动位置,但是要使用本机Java代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句