Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于listview对象位置按ID选择文本视图_C#_Android_Android Listview_Textview_Xamarin - Fatal编程技术网

C# 基于listview对象位置按ID选择文本视图

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"

编辑:这是针对C#,而不是Java的

我觉得这不应该像现在这么难,但我已经为此奋斗了好几个小时,希望有人能帮我解决这个问题

基本上我有一个listview,每行都有5个文本视图

<?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);