リストを使用してListView()を作成しています。ユーザーはリストに項目を追加できます。しかし、ListViewの上部に表示する項目が必要です。リストを逆順に表示するには、リストの先頭にアイテムを挿入するにはどうすればよいですか?ListViewの上部に新しい項目を表示
答えて
おそらくArrayAdapter
を使用し、insert(T, int)
メソッドを使用する必要があります。
例:
ListView lv = new ListView(context);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.id...);
lv.setAdapter(adapter);
...
adapter.insert("Hello", 0);
私はちょうど私のリストを廃止し、うんざりにアダプタを使用しました。素晴らしい仕事を!ありがとう。 – rphello101
あなたは大歓迎です! – aymeric
デフォルトでは、リストは要素を下部に追加します。そのため、追加する新しい要素はすべて下部に表示されます。それはあなたのデータソースに格納されているリストビューは、データを表示する
Collections.reverse(yourList);
良いアイデアだが、私はリストにアイテムを追加し続け、それを元に戻し続けた。リストの両端にアイテムを交互に追加していた。基本データ型のみを保存するSharedPreferencesでデータを保存する必要があるので、2つのリストを追跡するのは面倒です。 – rphello101
私が探していたwhatiが見つかりました。 thankx – raj
良いですが、オブジェクト+カスタムタグを試してみるとうまくいかない! – delive
:あなたが逆の順序でそれをしたい場合は、同様にリストにlistadapter /ビューに
何かを逆に設定する前かもしれません。
データベースに追加するときは、最後に要素を追加する必要があります。したがって、Cursorオブジェクトを介してすべてのデータを取得し、ArrayAdapterに割り当てると、その順序になります。基本的には、データベースの先頭にデータを置くことをお勧めします。
のArrayListを使用して、あなたはSQLiteのを使用している場合や、あなたがorder by
使用することができますCollections.reverse(arrayList)
でそれを行うことができます。
いいえ、これは間違っていると思います。リストビューの場合は、array/listを入力として渡す必要があります。あなたが挿入のタイムスタンプを持っていない限り、データベースでは何もできません。 – kosa
@南里:ごめんなさい。私が実際に意味していたのは、Cursorオブジェクトを使用してデータベースからデータを取得し、それをArrayAdapterに配置することでした。このようなものhttp://stackoverflow.com/questions/5717732/how-do-i-display-data-from-my-database-in-a-listview。私の答えが更新されます。ご意見ありがとうございます。 – Swayam
あなたは常にあなたのオブジェクト内の日付スタンプを持っており、それに基づいて、あなたのリストビューを並べ替えることができが..
public class CustomComparator implements Comparator<YourObjectName> {
public int compare(YourObjectName o1, YourObjectName o2) {
return o1.getDate() > o2.getDate() // something like that.. google how to do a compare method on two dates
}
}
が今、あなたのリストを並べ替える
Collections.sort(YourList, new CustomComparator());
この最新のアイテムが上に行くようにリストをソートする必要があります
代わりにLinkedListを使用して、addFirst()メソッドを使用してリストに要素を追加することで、目的の動作(ListViewの上部に新しい項目)を持たせることができます。元のリストを変更せず
別の解決策は、アダプタ
更新@Override
public Item getItem(int position) {
return super.getItem(getCount() - position - 1);
}
でのgetItem()メソッドをオーバーライドする:例
public class ChatAdapter extends ArrayAdapter<ChatItem> {
public ChatAdapter(Context context, List<ChatItem> chats) {
super(context, R.layout.row_chat, chats);
}
@Override
public Item getItem(int position) {
return super.getItem(getCount() - position - 1);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(R.layout.row_chat, parent, false);
}
ChatItem chatItem = getItem(position);
//Other code here
return convertView;
}
}
これは非常に洗練されたソリューションです。私はデータ項目を公開しない匿名のArrayAdaptersで使用できるようにマイナーな変更を加えました: 'return super.getItem(getCount() - 1 - position); ' –
これは動作しますが、リストの最初の項目をスクロールするとき最後のアイテムリストと重複しているようです。この問題はリストビュー項目のリサイクルに関係していると思います。 –
アダプタでgetItem()メソッドをオーバーライドする方法を教えてください。 – Apurva
mBlogListはリサイクラ図です...
mBlogList=(RecyclerView) findViewById(R.id.your xml file);
mBlogList.setHasFixedSize(true);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
mBlogList.setLayoutManager(mLayoutManager);//VERTICAL FORMAT
リストの先頭に要素を追加することができます。
arraylist.add(0, object)
次に、新しい要素が常に上部に表示されます。
- 1. ListViewに項目を表示
- 2. divの上にリスト項目を表示
- 3. ListView内部ViewPager - ListViewの項目は空白にします
- 4. ListViewはフィルタリング後に各項目を2回表示します
- 5. ListViewに項目が表示されない
- 6. C#ListViewに項目が表示されない
- 7. 項目が動的であるListViewの項目を更新したい
- 8. ListView選択した項目を強調表示
- 9. Xamarinフォームのグリッド内のListViewに表示される項目
- 10. ItemsControl内の新しい項目をスクロールして表示
- 11. 新しいメニュー項目がUIに表示されない
- 12. AngularJSの新しいページを表示リストビューの項目を選択
- 13. グループ内の空白の項目を表示するListView
- 14. ListView、新しい項目の追加を防止する
- 15. アンドロイドオートリフレッシュListView項目
- 16. Android ListViewページごとに1項目表示
- 17. 通知を取得する新しい項目を追加Listview
- 18. WPFで表示されている項目の数を制限します。ListView
- 19. Android - ListViewの最後の項目は表示されません。
- 20. リストビューは状態更新後に新しい項目を表示しません
- 21. ListViewのAndroidが同じ項目に多くの時間を表示します
- 22. WPF ListView個々の高さで表示される項目
- 23. listViewのポップアップメニュー項目は表示されません
- 24. WPF ListViewの選択項目が表示されます
- 25. React Native ListViewの最後の項目が完全に表示されない
- 26. カスタムアダプタでListView項目
- 27. リストボックスの項目データを更新する際の非表示項目(winform)
- 28. ドロップダウンされていない選択項目の一部のみを選択項目に表示する方法
- 29. ListViewのOnClickListenerがリストの別の項目を更新します
- 30. Mouserが上のときに "ポップアップウィンドウ"を表示リストボックスの項目
データのソースは何ですか?あなたがデータベースからそれを読んでいるならば、あなたは 'order by 'またはそれと同等のものを使ってクエリが返す順序をいつでも変更することができます。 – MrLore