0

在我的列表中,数据显示如下,

test 1
test 2
test 3

但我想向他们展示,

1) test 1
2) test 2
3) test 3

我怎样才能做到这一点。请帮忙。这是我到目前为止所做的代码。

public class AppointmentList extends Activity{

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.select_to_delete);

        String[] myStringArray = new String[] { "test 1", "test 2", "test 3"};

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
                android.R.layout.simple_list_item_1, myStringArray);

        ListView listView = (ListView) findViewById(R.id.listView1);
        listView.setAdapter(adapter);
    }

}
4

4 回答 4

5

您应该制作自己的自定义适配器类并实现其方法。. .

这是自定义适配器类的完整示例:

 private class Adapter extends BaseAdapter {
            private ArrayList<String> array;
            private Context ctx;

            public Adapter(Context ctx) {
                this.ctx = ctx;
                array = new ArrayList<String>();
            }

            @Override
            public int getCount() {
                return this.array.size();
            }

            @Override
            public Object getItem(int position) {
                return this.array.get(position);
            }

            @Override
            public long getItemId(int position) {
                return position;
            }

            /**
             * add a String Item in a List
             * 
             * @param item
             */
            public void addItem(String item) {
                this.array.add(item);
                this.notifyDataSetChanged();
            }

            /**
             * Delete an Item from a List
             * 
             * @param position
             */
            public void deleteItem(int position) {
                this.array.remove(position);
                this.notifyDataSetChanged();
            }

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

                if (convertView == null) {
                    newView = View.inflate(ctx, R.layout.item_layout, null);
                } else {
                    newView = convertView;
                }

                String txt = (String) this.getItem(position);

//   Here is what you're looking for:
                ((TextView) newView.findViewById(R.id.item_numb)).setText(""
                        + (position + 1) + ". ");
//   End;
                ((TextView) newView.findViewById(R.id.item_text)).setText(txt);

                return newView;
            }

        }

之后您可以像这样使用适配器:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_to_do_list);

        ListView ls = (ListView) findViewById(R.id.listView);
        Adapter adapter = new Adapter(this);
        ls.setAdapter(adapter);
    }
于 2013-04-12T14:05:56.823 回答
2

您需要创建一个自定义项以按照您想要的方式从您的对象ArrayAdapter中填充一个。ListView

这种技术的优点是您获得了一种视图回收机制,该机制将回收Views您的内部ListView以减少内存消耗。

简而言之,您必须:

1.创建一个代表单行数据的对象。

2.创建ArrayList这些对象中的一个。

3.创建一个包含 ListView 的布局或使用代码将 ListView 添加到您的主布局。

4.创建单行布局。

5.创建一个ViewHolder从 的角度代表数据行的视觉方面Views

6.创建一个自定义ArrayAdapter,将根据您的需要填充行,在其中您将覆盖该getView方法并使用position您收到的当前行的参数View来指示该行index

7.最后把这个分配ArrayAdapter给你的ListViewin onCreate

通过阅读我写的这篇博文,您可以了解如何实现这一点:

创建自定义 ArrayAdapter

于 2013-04-12T14:05:59.553 回答
0

您将不得不创建一个自定义适配器并将position+1用作行中的数字

于 2013-04-12T13:58:37.457 回答
0

您可以尝试在列表中显示 html 内容

例如 :

Html.fromHtml("<ol><li> test 1</li></ol>") 

HTML 文档

于 2013-04-12T13:59:15.210 回答