2013-04-12 43 views
0

在我的列表中的數據是這個樣子ListView項前的數字,如何把Android中

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); 
    } 

} 
+1

只要改變「測試1」到「1)測試1」等,如果這種方法適合你。 – Egor

+0

不能。數組的數據將來自數據庫。 – Ravindu

+0

如果此方法不適合您,則必須創建一個自定義適配器來執行此操作。 – Budius

回答

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); 
    } 
+0

但我怎麼可以用這個適配器 – Ravindu

+0

我編輯我自己的帖子,它應該幫助你。 。 。 – Jilberta

+0

你也可以查看這個鏈接,2.1 ch。 http://www.vogella.com/articles/AndroidListView/article.html#adapterown_custom – Jilberta

0

你將不得不創建一個自定義適配器,並使用position+1作爲數你行

0

您可以嘗試到您的列表

上顯示HTML內容,例如:

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

Html Documentation

2

您需要創建一個自定義ArrayAdapter從填充ListView您以你想要的方式反對。

此技術的優點是您獲得了一個Views回收機制,可以在您內部回收Views以便花費更少的內存。

在短期你必須:

1.創建一個代表你的數據的單個行的對象。

2.創建這些對象的ArrayList

3.創建一個包含ListView的佈局,或者使用代碼向您的主佈局中添加一個ListView。

4.創建單行佈局。

5.創建一個ViewHolder,從Views的立場來看,它將代表您的數據行的視覺方面。

創建一個自定義ArrayAdapter,將根據您的需要填充的行,它則會覆蓋getView方法和使用所獲得的corrent行Viewposition參數來表示該行index

7.最後將此ArrayAdapter分配給您的ListViewonCreate

您可以通過閱讀這篇博客獲得如何實現這一點的想法,我寫:

Create a Custom ArrayAdapter