Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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
Android:关于ListView和SimpleAdapter_Android_Listview_Simpleadapter - Fatal编程技术网

Android:关于ListView和SimpleAdapter

Android:关于ListView和SimpleAdapter,android,listview,simpleadapter,Android,Listview,Simpleadapter,我尝试使用SimpleAdapter填充列表视图,但失败了 我读过很多案例,但仍然找不到有用的方法 这是代码。我不知道有什么问题 ArrayList<HashMap<String,Object>> listdata=new ArrayList<HashMap<String,Object>>(); for (int i=0;i<3;i++){ HashMap<String, Object> hm = new

我尝试使用SimpleAdapter填充列表视图,但失败了

我读过很多案例,但仍然找不到有用的方法

这是代码。我不知道有什么问题

ArrayList<HashMap<String,Object>> listdata=new ArrayList<HashMap<String,Object>>();

    for (int i=0;i<3;i++){
        HashMap<String, Object> hm = new HashMap<String, Object>();
        hm.put("title", "title");
        hm.put("context", "context");

        listdata.add(hm);
    }

    String[] from = {"title", "context"};
    int[] to={R.id.title,R.id.context};

    SimpleAdapter adapter = new SimpleAdapter(this, listdata, R.layout.list_item, from, to);
    ListView lv=(ListView)this.findViewById(R.id.listView1);
    lv.setAdapter(adapter);
ArrayList listdata=new ArrayList();

对于(int i=0;i我总是将列表项放在一个单独的xml文件中。可以尝试将两个文本视图的线性布局放在一个文件中(可以称之为listrow.xml)

例如:

以下是listitem(list\u stat\u item.xml):


下面是主视图(view_stats.xml):


代码如下:

创建ArrayList,并向其中添加项,然后绑定到自定义适配器

ArrayList<StatItem> lst = new ArrayList<StatItem>();

        lst.add(new StatItem("Current Week: ", String.valueOf(currentWeek)));
        lst.add(new StatItem("Weeks Left: ", String.valueOf(GeneralUtils.daysUntilBirth(this, pregnancyID) / 7)));
        lst.add(new StatItem("Days Left: ", String.valueOf(GeneralUtils.daysUntilBirth(this, pregnancyID))));
        lst.add(new StatItem("Current Trimester: ", String.valueOf(currentTrimester)));
        lst.add(new StatItem("Posts: ", String.valueOf(blogCount)));
        lst.add(new StatItem("Baby Names: ", String.valueOf(babyNamesCount)));



        getListView().setSelector(android.R.color.transparent);
        StatListAdapter sa = new StatListAdapter(this, R.layout.list_stat_item, lst );
        setListAdapter(sa);
ArrayList lst=new ArrayList();
lst.add(新统计项(“当前周:”,String.valueOf(当前周));
lst.add(新统计项(“剩余周数:”,String.valueOf(GeneralUtils.daysuntilbornight(this,pregnacyid)/7));
lst.add(新统计项(“剩余天数:”,String.valueOf(GeneralUtils.daysuntilbornight(this,pregnacyid)));
lst.add(新统计项(“当前三个月:”,String.valueOf(当前三个月));
lst.add(新的StatItem(“Posts:,String.valueOf(blogCount)));
lst.add(新统计项(“婴儿姓名:”,String.valueOf(BabyNameScont));
getListView().setSelector(android.R.color.transparent);
StatListAdapter sa=新StatListAdapter(此,R.layout.list_stat_item,lst);
setListAdapter(sa);
如果要查看适配器代码(StatListAdapter扩展了ArrayAdapter):

公共类StatListAdapter扩展了ArrayAdapter
{
公共阵列列表项;
公共StatListAdapter(上下文上下文、int textViewResourceId、ArrayList对象){
超级(上下文、textViewResourceId、对象);
此项=对象;
}
公共视图getView(int位置、视图转换视图、视图组父视图)
{
视图v=转换视图;
如果(v==null)
{
LayoutInflater li=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=li.充气(R.布局.列表\统计\项,空);
}
StatItem i=项目。获取(位置);
如果(i!=null)
{
TextView kt=(TextView)v.findViewById(R.id.txtKey);
TextView vt=(TextView)v.findViewById(R.id.txtValue);
kt.setText(i.key);
vt.setText(i.value);
}
返回v;
}
}

我怀疑问题出在Xml上,请尝试为列表项声明第二个布局文件

您的_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <ListView android:layout_height="wrap_content" android:id="@+id/listView1" android:layout_width="fill_parent" />   
</LinearLayout>

和list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <TextView android:layout_height="wrap_content" android:id="@+id/title" android:text="TextView" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge"></TextView>
    <TextView android:text="TextView" android:id="@+id/context" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>    
</LinearLayout>


如果您使用上述两个布局文件,您的代码看起来不错,应该可以正常工作。

您能用这两个布局文件更新您的问题吗?您发布的Xml看起来不好剪切粘贴谢谢您的评论。在我更改列表项后,这确实有效谢谢您的努力。您做得非常好。这是解决此问题的另一种方法.我发现了我的错误。它是由list_item.xml引起的
ArrayList<StatItem> lst = new ArrayList<StatItem>();

        lst.add(new StatItem("Current Week: ", String.valueOf(currentWeek)));
        lst.add(new StatItem("Weeks Left: ", String.valueOf(GeneralUtils.daysUntilBirth(this, pregnancyID) / 7)));
        lst.add(new StatItem("Days Left: ", String.valueOf(GeneralUtils.daysUntilBirth(this, pregnancyID))));
        lst.add(new StatItem("Current Trimester: ", String.valueOf(currentTrimester)));
        lst.add(new StatItem("Posts: ", String.valueOf(blogCount)));
        lst.add(new StatItem("Baby Names: ", String.valueOf(babyNamesCount)));



        getListView().setSelector(android.R.color.transparent);
        StatListAdapter sa = new StatListAdapter(this, R.layout.list_stat_item, lst );
        setListAdapter(sa);
public class StatListAdapter extends ArrayAdapter<StatItem>
    {
        public ArrayList<StatItem> items;
        public StatListAdapter(Context context, int textViewResourceId, ArrayList<StatItem> objects) {
            super(context, textViewResourceId, objects);
            this.items = objects;

        }

        public View getView(int position, View convertView, ViewGroup parent)
        {
            View v = convertView;
            if (v == null)
            {
                LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = li.inflate(R.layout.list_stat_item, null);

            }
            StatItem i = items.get(position);
            if (i != null)
            {
                TextView kt = (TextView)v.findViewById(R.id.txtKey);
                TextView vt = (TextView)v.findViewById(R.id.txtValue);

                            kt.setText(i.key);
                            vt.setText(i.value);

            }


            return v;

        }

    }
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <ListView android:layout_height="wrap_content" android:id="@+id/listView1" android:layout_width="fill_parent" />   
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <TextView android:layout_height="wrap_content" android:id="@+id/title" android:text="TextView" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge"></TextView>
    <TextView android:text="TextView" android:id="@+id/context" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>    
</LinearLayout>