我在Android应用程序中使用多列列表视图。我使用Simple Adapter将数据存储在不同的文本视图中。现在我想从列表视图中检索数据,即每个特定的行和列。我正在动态地向Listview添加行。 这就是我存储的方式。
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
s2=new String[s1.length];
for(int i=0;i<s2.length;i++)
{
map = new HashMap<String, String>();
map.put("name",s1[i][0]);
map.put("salary",s1[i][1]);
map.put("age",s1[i][2]);
map.put("exp",s1[i][3]);
map.put("invest",s1[i][4]);
map.put("gain",s1[i][5]);
mylist.add(map);
}
sd =new SimpleAdapter(getApplicationContext(),mylist,R.layout.activity_listview,new
String[]{"name","iprice","qty","total","lprice","gain"},new int[]
{R.id.t1,R.id.t2,R.id.t3,R.id.t4,R.id.t5,R.id.t6});
}
catch(Exception e)
{
}
自定义XML文件代码: -
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:paddingTop="4dip"
android:paddingBottom="6dip"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/t1"
android:layout_width="70dip"
android:layout_height="wrap_content"
android:text="text1"/>
<TextView
android:id="@+id/t2"
android:layout_width="30dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="text2" />
<TextView
android:id="@+id/t3"
android:layout_width="20dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="text3" />
<TextView
android:id="@+id/t4"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="text4" />
<TextView
android:id="@+id/t5"
android:layout_width="30dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="text5" />
<TextView
android:id="@+id/t6"
android:layout_width="30dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="text6" />
</LinearLayout>
主XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="288dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button1" >
</ListView>
</RelativeLayout>
现在单击特定行我想从listview中检索名称和年龄字段。我该怎么办?先感谢您。
答案 0 :(得分:0)
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
String name = ((TextView) view.findViewById(R.id.tv1)).getText().toString();
String age = ((TextView) view.findViewById(R.id.tv3)).getText().toString();
TextView tv111 = (TextView) view.findViewById(R.id.tv);
tv111.setText(name);
TextView tv222 = (TextView) view.findViewById(R.id.tw);
tv222.setText(age);
}
});
并在main.xml中
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="text1" />
<TextView
android:id="@+id/tw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_weight="1"
android:text="text3" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp" >
</ListView>
</RelativeLayout>
答案 1 :(得分:0)
将itemclicklistener添加到listview并获取单击的视图,然后获取其子视图
thelistview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentvu, View clickedvu, final int ind,long arg3)
{
///
TextView text_view1=(TextView)((View)clickedvu.getElementById(R.id.t1));
TextView text_view2=(TextView)((View)clickedvu.getElementById(R.id.t2));
TextView text_view3=(TextView)((View)clickedvu.getElementById(R.id.t3));
TextView text_view4=(TextView)((View)clickedvu.getElementById(R.id.t4));
TextView text_view5=(TextView)((View)clickedvu.getElementById(R.id.t5));
TextView text_view6=(TextView)((View)clickedvu.getElementById(R.id.t6));
}
});
希望这会有所帮助 修改强> clickedvu在这里根据文档返回被点击/触摸的视图,所以我们应该能够获取其中的元素
答案 2 :(得分:0)
您可以点击arraylist
项ListView
。如下所示,
String name = mylist.get(position).get("name");
String age = mylist.get(position).get("age");
之后你想在TextView
中设置这个字符串,那么你可以使用这个
textName.setText(name);
textAge.setText(age);