使用arrayadapter填充listview

时间:2013-02-25 06:50:19

标签: android listview android-arrayadapter

我想在其他下方显示两个字符串,就像它是一个列表一样。 我尝试使用simple_list_item_1填充listview,但屏幕上没有任何内容。

((ListView)view).setAdapter(new ArrayAdapter<String> 
(RealScreen.getAndroidBaseContext(),android.R.layout.simple_list_item_1, label));

其中label是一个包含两个要显示的项目的数组。我只能看到一个白色的屏幕。此外,我希望此列表不可点击。

我希望输出如下:

String 1
String 2

我不使用Activity,而是使用View。 这是创建视图的方法

public void createView(JSONObject definition) {
    // TODO Auto-generated method stub
    super.createView(definition);
     final JSONArray rowArray = definition.optJSONArray(KeyConstants.KEY_ROWS);
     final JSONArray columnArray = definition.optJSONArray(KeyConstants.KEY_COLUMNS);
     if (rowArray != null) {
            label = new String[rowArray.length()];
            for (int i = 0; i < rowArray.length(); i++) {
                final JSONObject candidate = rowArray.optJSONObject(i);
                if(candidate!=null){
                    label[i]=candidate.optString(KeyConstants.KEY_LABEL_TEXT, null);
                }
            }
     }
    ((ListView)view).setAdapter(new ArrayAdapter<String>(RealScreen.getAndroidBaseContext(),android.R.layout.simple_list_item_1, label));
}

感谢。

1 个答案:

答案 0 :(得分:0)

首先创建一个自定义适配器类,如下所示

类MyAdapter扩展了ArrayAdapter     {

    private Context context;

    private ArrayList<String> list;

    public MyAdapter(Context context,
            ArrayList<String> list) 
            { 
        super(context, R.layout.layout_list);
        this.context = context;
        this.list = list;
    }




    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {

        ViewHolder holder = null;

        if (convertView == null) {
            holder = new ViewHolder();

            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            convertView = inflater.inflate(R.layout.layout_list,
                    null);

            convertView.setTag(holder);
            holder.string1  = (TextView) convertView
                    .findViewById(R.id.stringgID1);



            holder.string2  = (TextView) convertView
                    .findViewById(R.id.stringID2);


        }
                    else
                     {
            holder = (ViewHolder) convertView.getTag();
        }


        holder.string1 .setText(list.get(postion));
        holder.string2 .setText(list.get(position));

        return convertView;
    }

    @Override
    public int getCount() {

        return list.size();
    }

    class ViewHolder {
        TextView string1 = null;
        TextView string2 = null;


    }

}

然后让您的活动扩展活动,不是ListActivity

listView.setAdapter(new MyAdapter(youtactivityame.this,label);

执行此操作可以显示包含任意数量列表项的标签。

相关问题