我在一个活动中列出了viewview,我想在其顶部附加数据。当活动加载时,列表视图被填充。现在,当用户点击一个按钮时,我带来了额外的数据,但我想要追加这些数据在listview的顶部。我怎么能做到这一点?
我使用baseAdapter
制作了自定义列表视图。这是我的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;
}
}
以下是我如何从我的活动中为listview函数设置适配器。
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();
}
}
答案 0 :(得分:2)
首先,不要使用hashmap来保存数据。你宁愿使用ArrayList,因为你将要迭代。哈希映射通常用于快速信息检索,通常不用于迭代(这可以通过Iterator
完成)。
接下来,在LazyAdapterUserAdminChats
上创建一个方法,将内容添加到您的arraylist的头部。
最后,当您添加到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;
}