C# 基于listview对象位置按ID选择文本视图
编辑:这是针对C#,而不是Java的 我觉得这不应该像现在这么难,但我已经为此奋斗了好几个小时,希望有人能帮我解决这个问题 基本上我有一个listview,每行都有5个文本视图C# 基于listview对象位置按ID选择文本视图,c#,android,android-listview,textview,xamarin,C#,Android,Android Listview,Textview,Xamarin,编辑:这是针对C#,而不是Java的 我觉得这不应该像现在这么难,但我已经为此奋斗了好几个小时,希望有人能帮我解决这个问题 基本上我有一个listview,每行都有5个文本视图 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/id"
android:layout_height="wrap_content"
android:layout_width="0px"
android:layout_weight="1"
android:text="id"/>
<TextView
android:id="@+id/Name"
android:layout_height="wrap_content"
android:layout_width="0px"
android:layout_weight="1"
android:text="Name" />
<TextView
android:id="@+id/Status"
android:layout_height="wrap_content"
android:layout_width="0px"
android:layout_weight="1"
android:text="Status" />
<TextView
android:id="@+id/Lat"
android:layout_height="wrap_content"
android:layout_width="0px"
android:layout_weight="1"
android:text="Lat"/>
<TextView
android:id="@+id/Long"
android:layout_height="wrap_content"
android:layout_width="0px"
android:layout_weight="1"
android:text="Long"/>
</LinearLayout>
所以我想要的是,当有人单击该行时,我可以从该特定行中的任何子文本视图中获取文本
因此,我可以使用e.position获取listview中的位置,或者使用以下方法获取对象:
ListView listView = FindViewById<ListView>(Resource.Id.LocationsList);
var item = listView.GetChildAt(e.Position);
ListView-ListView=findviewbyd(Resource.Id.LocationsList);
var item=listView.GetChildAt(e.Position);
但是我怎样才能在该对象中获得5个文本视图呢
非常感谢你的帮助 正确的方法是使用
OnItemClickListener
:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView nameView = (TextView) view.findViewById(R.id.Name);
}
});
listView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView Name视图=(TextView)view.findViewById(R.id.Name);
}
});
ListView ListView=(ListView)findViewById(R.id.LocationsList);
lv.setOnItemClickListener(新的OnItemClickListener()
{
@凌驾
public void onItemClick(AdapterView arg0,View ItemView,int position,long arg3)
{
//ItemView是单击的列表项的视图
//由于u表示将有5个文本视图,即代码下面固定数量的文本视图,因此认为MB是合理的。
//如果文本的数量在变化,那么更好的方法是获取所有子节点并继续
TextView txt1=(TextView)findViewById(R.id.TextView1);
...
...
TextView txt5=(TextView)findViewById(R.id.TextView5);
}
});
这是C版本
或者如果你已经有了这个职位,你可以使用它
ListView listView = FindViewById<ListView>(Resource.Id.LocationsList);
var item = listView.GetChildAt(e.Position);
var textView1 = item.FindViewById(Resource.Id.textview1);
ListView-ListView=findviewbyd(Resource.Id.LocationsList);
var item=listView.GetChildAt(e.Position);
var textView1=item.FindViewById(Resource.Id.textView1);
什么是e.Position
中的e
?您使用的是ExpandableListview
?我正在寻找c#解决方案,很抱歉我应该将其添加到描述中,仅在标记中提到。我知道它是c#,但我认为即使是c#IDE版本,onItemClickListener也会出现。我正在寻找c#解决方案,抱歉,我应该将其添加到描述中,仅在标记中提到。@user2463732如果这是正确答案,请选择复选标记将其标记为答案,以便其他人可以看到它是正确的。
listView.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) => {
var textView1 = e.View.FindViewById(Resource.Id.textview1);
var textView2 = e.View.FindViewById(Resource.Id.textview2);
};
ListView listView = FindViewById<ListView>(Resource.Id.LocationsList);
var item = listView.GetChildAt(e.Position);
var textView1 = item.FindViewById(Resource.Id.textview1);