我是Xamarin / Android的新手。我有一个大约20行的列表视图(要查看最后几行,用户需要向下滚动)。我需要根据一些计算值自动突出显示随机行。我的问题是,一旦填充了列表视图(我有一个自定义适配器来填充列表视图),如何设置所选行的背景或前景色(例如,第三行,突出显示10秒钟,然后突出显示第一行-行号基于计算)。
我还可以自动向上/向下滚动显示当前不在屏幕空间内的行吗?例如,如果我当前正在突出显示第2行,然后接下来我需要突出显示第15行,则希望该应用程序自动向下滚动并显示突出显示的第15行。有可能吗?
以下是我的自定义适配器。
public class PeopleListAdapter: BaseAdapter<Content>
{
List<Content> content;
Activity context;
public PeopleListAdapter(Activity context, List<Content> content) : base()
{
this.context = context;
this.content = content;
}
public override long GetItemId(int position)
{
return position;
}
public override Content this[int position]
{
get { return content[position]; }
}
public override int Count
{
get { return content.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView; // re-use an existing view, if one is available
if (view == null) // otherwise create a new one
view = context.LayoutInflater.Inflate(Resource.Layout.listlayout, null);
view.FindViewById<TextView>(Resource.Id.txtValues).Text = content[position].Text;
return view;
}
}
下面列出的是我的列表视图布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list" >
</ListView>
</LinearLayout>
我让适配器填充以下布局(listlayout.axml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtValues" />
</LinearLayout>
请提出我是否正确的建议。我是新来的。我还想知道在上述实现的情况下如何突出显示我选择的行。
答案 0 :(得分:0)
在您的getview方法中,您将为每一行放大一个视图:
View view = convertView; // re-use an existing view, if one is available
if (view == null) // otherwise create a new one
view = context.LayoutInflater.Inflate(Resource.Layout.listlayout, null);
在此处,将标签属性分配给视图。即view.setTag(position)。
然后在相同的方法getview中,添加检查if(Integer.parserInt(view.getTag())== positionToHighlight),然后设置视图的背景色。例如:view.setBackground()