0

アクティビティにリストビューがあり、その上部にデータを追加したい。アクティビティが読み込まれると、リストビューが表示されます。ユーザーがボタンをクリックすると、追加のデータが表示されますが、このデータを上部に追加します。リストビューの。どうすればこれを達成できますか?

baseAdapter.Heres mybaseAdapterクラスを使用して作成したカスタムリストビューを作成しました。

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

1 に答える 1

2

まず第一に、データを保持するためにハッシュマップを使用しないでください。反復するので、ArrayListを使用する方がはるかに望ましいです。ハッシュマップは通常、高速な情報検索に使用され、通常は反復には使用されません(ただし、これはを使用して実行できますIterator)。

次に、LazyAdapterUserAdminChats配列リストの先頭に物を追加するためのメソッドを作成します。

最後に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;
}
于 2012-07-15T19:04:15.367 に答える