今年の年月日を使ってタイムラインを作りたいと思います。 RecyclerViewは、リサイクルビューの機能に役立ちます。私は無限のリストを持つプロジェクトを見てきましたが、それらのすべてには始まりがあります。 RecycleViewやその他のコンポーネントを使用して、開始点や終了点を持たないリストを作成することは可能ですか?アンドロイドでタイムラインを作ってください
0
A
答えて
0
あなたはonScrollListenerを添付して、タイムラインビューを表示するにはdy
private boolean loading = true;
int pastVisiblesItems, visibleItemCount, totalItemCount;
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener()
{
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{
if(dy > 0) //check for scroll down and do the same for scroll up
{
visibleItemCount = mLayoutManager.getChildCount();
totalItemCount = mLayoutManager.getItemCount();
pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition();
if (loading)
{
if ((visibleItemCount + pastVisiblesItems) >= totalItemCount)
{
loading = false;
Log.v("...", "Last Item Wow !");
//Do pagination.. i.e. fetch new data
}
}
}
}
});
0
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
totalItemCount = linearLayoutManager.getItemCount();
lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
if (!loading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
if (onLoadMoreListener != null) {
onLoadMoreListener.onLoadMore();
}
loading = true;
if (onLoadMoreListenerLeft != null) {
onLoadMoreListenerLeft.onLoadMoreLeft();
}
loading = true;
}
});
0
の値に基づいて、より多くのアイテムを取得し、表示することができ、私は図書館、以下の用途を持っています。最初にこのライブラリをプロジェクトに追加してください。私はhttps://github.com/vipulasri/Timeline-View
compile 'com.github.vipulasri:timelineview:1.0.5'
MainActivity.java
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
String[] name = {"Event 1", "Event 2", "Event 3"};
String[] status = {"active", "inactive", "inactive"};
String[] description = {"Description 1","Description 2","Description 3"};
String[] time = {"11:00 PM", "10:03 AM", "10:03 PM"};
List<TimeLineModel> timeLineModelList;
TimeLineModel[] timeLineModel;
Context context;
LinearLayoutManager linearLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timeLineModelList = new ArrayList<>();
int size = name.length;
timeLineModel = new TimeLineModel[size];
context = MainActivity.this;
linearLayoutManager = new LinearLayoutManager(this);
for (int i = 0; i < size; i++) {
timeLineModel[i] = new TimeLineModel();
timeLineModel[i].setName(name[i]);
timeLineModel[i].setStatus(status[i]);
timeLineModel[i].setDescription(description[i]);
timeLineModel[i].setTime(time[i]);
timeLineModelList.add(timeLineModel[i]);
}
recyclerView = (RecyclerView) findViewById(R.id.activity_main_recycler_view);
recyclerView.setLayoutManager(linearLayoutManager);
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), linearLayoutManager.getOrientation());
recyclerView.addItemDecoration(dividerItemDecoration); //for divider
recyclerView.setAdapter(new TimeLineAdapter(context, timeLineModelList));
}}
TimeLineModel.java
class TimeLineModel {
private String name;
private String status;
private String description;
String getTime() {
return time;
}
void setTime(String time) {
this.time = time;
}
private String time;
String getDescription() {
return description;
}
void setDescription(String description) {
this.description = description;
}
String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
String getStatus() {
return status;
}
void setStatus(String status) {
this.status = status;
}}
TimeLineAdapter.java
を参照していますclass TimeLineAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<TimeLineModel> timeLineModelList;
private Context context;
TimeLineAdapter(Context context, List<TimeLineModel> timeLineModelList) {
this.timeLineModelList = timeLineModelList;
this.context = context;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_timeline_layout, parent, false);
return new ViewHolder(view, viewType);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
((ViewHolder) holder).textView.setText(timeLineModelList.get(position).getName());
((ViewHolder) holder).textViewDescription.setText(timeLineModelList.get(position).getDescription());
((ViewHolder)holder).textViewTime.setText(timeLineModelList.get(position).getTime());
if (timeLineModelList.get(position).getStatus().equals("inactive"))
((ViewHolder) holder).timelineView.setMarker(context.getDrawable(ic_remove_circle_outline_black_24dp));
else
((ViewHolder) holder).timelineView.setMarker(context.getDrawable(ic_check_circle_black_24dp));
}
@Override
public int getItemViewType(int position) {
return TimelineView.getTimeLineViewType(position, getItemCount());
}
@Override
public int getItemCount() {
return timeLineModelList.size();
}
private class ViewHolder extends RecyclerView.ViewHolder {
TimelineView timelineView;
TextView textView, textViewDescription, textViewTime;
ViewHolder(View itemView, int viewType) {
super(itemView);
timelineView = itemView.findViewById(R.id.row_timeline_layout_time_marker);
textView = itemView.findViewById(R.id.row_timeline_layout_text_view_name);
textViewDescription = itemView.findViewById(R.id.row_timeline_layout_text_view_description);
textViewTime = itemView.findViewById(R.id.row_timeline_layout_text_view_time);
timelineView.initLine(viewType);
}
}}
私のコードでは、データを含むモデルクラスを作成し、リストサイズのタイムラインに応じて、その参照のデータはrecyclerviewでバインドされます。TimeLineAdapter.java。 row_timeline_layoutは行xmlファイルです。このレイアウトはrecyclerviewでバインドされています。
静的データのタイムラインを作成し、それをrecyclerviewにバインドすることもできます。
関連する問題
- 1. aws opsworksでカスタム料理を作ってください
- 2. アンドロイドでUSSD応答を取得してみてください
- 3. イメージをダウンロードしてアンドロイドでダウンロードしてください。
- 4. ビューを常に素早い遊び場のタイムラインに入れてください。
- 5. アニメーションGIFで待ってください
- 6. リストボックスのタブイベントとフリックイベントの違いを作ってください。
- 7. イメージを相対パスでアンドロイドに追加してください
- 8. アンドロイドでマイクオーディオを入手してください。 AudioContext
- 9. divスライドを少し右に作ってください
- 10. テーブルのヘッダにドットフロートを作ってください
- 11. 目印のトグルボタンを作ってください
- 12. サムネイルを半分ずつ作ってくださいhtml
- 13. htmlのスパンに似たボタンを作ってください
- 14. JsonをAjaxを使って渡すPHPを使ってPHPを動作させないでください
- 15. Googleマップでアンドロイド(PlacePickerではなく)の場所をクリックしてください
- 16. ユーザーにアンドロイド通知を許可しないでください。
- 17. アンドロイド用MSAL for Chromeを使用しないでください
- 18. Task.Run()によって作成されたスレッド数をカウントしてください
- 19. Eclipse(アンドロイド)の添付ソースを変更してください
- 20. アンドロイドのユーザー位置を特定してください
- 21. アンドロイドのアクティビティを入力してください
- 22. アンドロイドのプログレスバーの色を変更してください
- 23. アンドロイド:strings.xmlからスピナーを挿入してください
- 24. アンドロイドのGmailタブレットデザインを選択してください(矢印スタイル)
- 25. アンドロイドのアクションバーの色を変更してください
- 26. アンドロイドのビュー展示を修正してください
- 27. アンドロイドの下線の色を変更してください
- 28. Android - アンドロイドのアクションバーの位置を変更してください
- 29. ゲームオブジェクトをゆっくりと回転させてください。
- 30. wordpressでフォームを書く動作を教えてください