2012-07-15 113 views
0

現有列表視圖的頂部我已經在一個活動列表視圖,我想追加數據在它的頂部。當活動加載列表視圖被填充。現在當用戶點擊一個按鈕我我帶來了額外的數據,但我想要這些數據追加在listview的頂部。我該如何做到這一點?追加元素在Android

我已經使用baseAdapter .Heres我baseAdapter類所做的自定義列表視圖:

public class LazyAdapterUserAdminChats extends BaseAdapter{ 

private Activity activity; 
private ArrayList<HashMap<String,String>> hashmap; 
private static LayoutInflater inflater=null; 


public LazyAdapterUserAdminChats(Activity activity,ArrayList<HashMap<String,String>> hashMaps) 
{ 
    this.activity=activity; 
    this.hashmap=hashMaps; 
    LazyAdapterUserAdminChats.inflater=(LayoutInflater)this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

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

@Override 
public Object getItem(int position) { 
    return position; 
} 

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

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

    View view=convertView; 

    if(convertView==null) 
     view=inflater.inflate(R.layout.useradminchat,null); 

    TextView username=(TextView)view.findViewById(R.id.UAC_userNametext); 
    TextView messagetext=(TextView)view.findViewById(R.id.UAC_messagetext); 
    TextView messageDate=(TextView)view.findViewById(R.id.UAC_dates); 

    HashMap<String,String> map=hashmap.get(position); 

    username.setText(map.get(HandleJSON.Key_username)); 
    messagetext.setText(map.get(HandleJSON.Key_messageText)); 
    messageDate.setText(map.get(HandleJSON.Key_messageDate)); 

    return view; 
} 

} 

下面是如何設置列表視圖功能適配器從我的活動。

  private void ShowListView(ArrayList<HashMap<String,String>> chat) 
     { 
      try 
      { 

       ListView lv=(ListView)findViewById(android.R.id.list); 
       adapter = new LazyAdapterLatestChats(this,chat); 
       lv.setAdapter(adapter); 
      } 
      catch(Exception e) 
      { 
       Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     } 

回答

2

首先,不要使用散列圖來保存您的數據。你寧願使用ArrayList,因爲你將會迭代。散列表通常用於快速信息檢索,通常不用於迭代(但可以通過Iterator來完成)。

接下來,在LazyAdapterUserAdminChats上創建一個方法,將其添加到ArrayList的頭部。

最後,在添加到數組列表的開頭時調用notifyDataSetChanged

例子:

public class LazyAdapterUserAdminChats extends BaseAdapter{ 

private Activity activity; 
private ArrayList<MyObj> al; 
private static LayoutInflater inflater=null; 


public LazyAdapterUserAdminChats(Activity activity,ArrayList<MyObj> al) 
{ 
    this.activity=activity; 
    this.al=al; 
    LazyAdapterUserAdminChats.inflater=(LayoutInflater)this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

// other methods 
.... 

public void addToHead(MyObj m) 
{ 
    this.al.add(m, 0); 
    notifyDataSetChanged(); 
} 

} 

您的自定義類可以是任何你想要的。例如,

public class MyObj 
{ 
    String hashMapKey, hashMapValue; 
} 
+0

但是如何追加到列表視圖的頂部。感謝adivce。 – Mj1992 2012-07-15 19:07:25

+0

你能通過代碼示例來解釋我嗎? – Mj1992 2012-07-15 19:09:48

+0

使用您自己的對象的ArrayList。你爲什麼需要hashmaps的數組列表?你相當新的Java?如果你想添加到數組列表的頭部,只需調用alObj.add(object,index); 在這種情況下,索引將會是0. – 2012-07-15 19:09:52