在我的列表中,数据显示如下,
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);
}
}
答案 0 :(得分:5)
您应该创建自己的自定义适配器类并实现其方法。 。
以下是Custom Adapter类的完整示例:
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);
}
答案 1 :(得分:2)
您需要创建自定义ArrayAdapter
,以便按照您希望的方式从对象中填充ListView
。
这项技术的优势在于您获得了一种视图回收机制,可以回收Views
内部的ListView
以减少内存。
简而言之你必须:
1。创建一个表示单行数据的对象。
2. :创建这些对象的ArrayList
。
3. 使用代码创建包含ListView的布局或将ListView添加到主布局。
4. :创建单行布局。
5。创建ViewHolder
,代表Views
的支持点,代表数据行的视觉方面。
6。创建一个自定义ArrayAdapter
,根据您的需要填充行,其中您将覆盖getView
方法并使用position
您收到的相关行View
的参数,表示行index
。
7。最后将此ArrayAdapter
分配给ListView
中的onCreate
。
您可以通过阅读我写的博客文章了解如何实现这一点:
答案 2 :(得分:0)
您必须创建自定义适配器并使用position+1
作为行中的数字
答案 3 :(得分:0)