ListView中的问题,有点意思 listview布局 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你SimpleAdapter 里面的布局是加载另一个布局,不能加载原来的大的布局,你这样写是加载了三次activity_history ,所以会出现三个保修历史, 你只要把activity_history里面下面的两个TextView写到另外的一个布局里面,然后SimpleAdapter加载这个布局就行了 activitypackage app.example.test12_24;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;import android.widget.SimpleAdapter; public class History extends Activity{ private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_history); List<Map<String, String>> datas = new ArrayList<Map<String, String>>(); putData(datas,"time", "2014/12/23傍晚","category","Mac地址绑定错误"); putData(datas,"time", "2014/12/22中午","category","用户名或密码错误"); SimpleAdapter sa = new SimpleAdapter(this, datas, R.layout.history_list, //加载外部布局 new String[]{"time","category"}, new int[]{R.id.ht_tv_time,R.id.ht_tv_category}); lv = (ListView) findViewById(R.id.ht_lv_list); lv.setAdapter(sa); } private void putData(List<Map<String, String>> datas,String key1,String value1,String key2,String value2){ Map<String,String> data = new HashMap<String, String>(); data.put(key1,value1); data.put(key2,value2); datas.add(data); }}activity 的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" > <LinearLayout android:id="@+id/ht_title" android:layout_width="fill_parent" android:layout_height="45dp" android:gravity="center_horizontal|center_vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="报修历史" android:textColor="#ffffff" android:textSize="20sp" /> </LinearLayout> <ListView android:id="@+id/ht_lv_list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/ht_title" > </ListView></RelativeLayout>外部XML<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/ht_tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/ht_lv_list" android:textSize="15sp" > </TextView> <TextView android:id="@+id/ht_tv_category" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/ht_tv_time" android:layout_marginTop="5dp" android:textSize="20sp" > </TextView></LinearLayout>因为你加载adpter的时候用是activity的XML,所有就又多了2次activity的XML。也就看到了你这个效果。记得加载adpter一定要创建一个新的XML文件布局 加载adpter时,要重新写一个item.xml 布局,用来显示在listview中,每一行的内容。2#,代码已经贴上了。 完美解决lv = (ListView) findViewById(R.id.ht_lv_list); //通过inflater将R.layout.history_top布局转换为View对象,再通过ListView中的addHeaderView方法添加进去 View header = getLayoutInflater().inflate(R.layout.history_top, null); lv.addHeaderView(header);<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="45dp" android:id="@+id/ht_title" android:background="@drawable/title_bar" android:gravity="center_horizontal|center_vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ht_tv_head" android:text="报修历史" android:textSize="20sp" android:textColor="#ffffff" /> </LinearLayout><?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" > <ListView android:id="@+id/ht_lv_list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true"> </ListView> <TextView android:layout_below="@id/ht_lv_list" android:id="@+id/ht_tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp"> </TextView> <TextView android:layout_below="@id/ht_tv_time" android:layout_marginTop="5dp" android:id="@+id/ht_tv_category" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"> </TextView></RelativeLayout> 我想问一下,像豌豆夹、腾讯等的手机助手是如何实现的。 得到时间值最大的图,在线等 关于android的自动化设计以及碰到的难题 熟ListView的兄弟过来帮帮忙 ListView Checkbox取值问题,贴代码,求前辈解决 opencore 严重问题!!! 求救!!! 资源共享:深入Android 开发 求助avd模拟器问题 如何使用自己新建的布局文件,替代系统生成的布局文件? 重叠布局点击时相应布局置于其它布局之上 使用ant编译android工程遇到的问题 ViewPage+Fragment替换Frament问题
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class History extends Activity{
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history);
List<Map<String, String>> datas = new ArrayList<Map<String, String>>();
putData(datas,"time", "2014/12/23傍晚","category","Mac地址绑定错误");
putData(datas,"time", "2014/12/22中午","category","用户名或密码错误");
SimpleAdapter sa = new SimpleAdapter(this,
datas,
R.layout.history_list, //加载外部布局
new String[]{"time","category"},
new int[]{R.id.ht_tv_time,R.id.ht_tv_category});
lv = (ListView) findViewById(R.id.ht_lv_list);
lv.setAdapter(sa);
}
private void putData(List<Map<String, String>> datas,String key1,String value1,String key2,String value2){
Map<String,String> data = new HashMap<String, String>();
data.put(key1,value1);
data.put(key2,value2);
datas.add(data);
}
}activity 的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" > <LinearLayout
android:id="@+id/ht_title"
android:layout_width="fill_parent"
android:layout_height="45dp"
android:gravity="center_horizontal|center_vertical" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="报修历史"
android:textColor="#ffffff"
android:textSize="20sp" />
</LinearLayout> <ListView
android:id="@+id/ht_lv_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/ht_title" >
</ListView></RelativeLayout>外部XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:id="@+id/ht_tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ht_lv_list"
android:textSize="15sp" >
</TextView> <TextView
android:id="@+id/ht_tv_category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ht_tv_time"
android:layout_marginTop="5dp"
android:textSize="20sp" >
</TextView></LinearLayout>
因为你加载adpter的时候用是activity的XML,所有就又多了2次activity的XML。也就看到了你这个效果。记得加载adpter一定要创建一个新的XML文件布局
2#,代码已经贴上了。
//通过inflater将R.layout.history_top布局转换为View对象,再通过ListView中的addHeaderView方法添加进去
View header = getLayoutInflater().inflate(R.layout.history_top, null);
lv.addHeaderView(header);<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="45dp"
android:id="@+id/ht_title"
android:background="@drawable/title_bar"
android:gravity="center_horizontal|center_vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ht_tv_head"
android:text="报修历史"
android:textSize="20sp"
android:textColor="#ffffff" />
</LinearLayout><?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" >
<ListView
android:id="@+id/ht_lv_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true">
</ListView>
<TextView
android:layout_below="@id/ht_lv_list"
android:id="@+id/ht_tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp">
</TextView>
<TextView
android:layout_below="@id/ht_tv_time"
android:layout_marginTop="5dp"
android:id="@+id/ht_tv_category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp">
</TextView>
</RelativeLayout>