TextListItemActivity.java revision 22037e659c30185f51f522e1761236f780334c9d
1e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing/* 2e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * Copyright 2017 The Android Open Source Project 3e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * 4e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * Licensed under the Apache License, Version 2.0 (the "License"); 5e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * you may not use this file except in compliance with the License. 6e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * You may obtain a copy of the License at 7e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * 8e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * http://www.apache.org/licenses/LICENSE-2.0 9e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * 10e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * Unless required by applicable law or agreed to in writing, software 11e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * distributed under the License is distributed on an "AS IS" BASIS, 12e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * See the License for the specific language governing permissions and 14e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * limitations under the License. 15e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing */ 16e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 17e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingpackage com.example.androidx.car; 18e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 19e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.app.Activity; 20e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.content.Context; 21e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.graphics.Point; 22e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.os.Bundle; 23e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.text.TextUtils; 24e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.view.View; 25e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.view.WindowManager; 26e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.widget.FrameLayout; 27e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport android.widget.Toast; 28e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 29e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport java.util.ArrayList; 30e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport java.util.Collections; 31e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport java.util.List; 32e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 33e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport androidx.car.widget.ListItem; 34e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport androidx.car.widget.ListItemAdapter; 35e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport androidx.car.widget.ListItemProvider; 36e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingimport androidx.car.widget.PagedListView; 37e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 38e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing/** 39e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing * Demo activity for {@link ListItem}. 40e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing */ 41e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxingpublic class ListItemActivity extends Activity { 42e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 43e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing private static int pixelToDip(Context context, int pixels) { 44e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing return (int) (pixels / context.getResources().getDisplayMetrics().density); 45e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing } 46e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 47e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing PagedListView mPagedListView; 48e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 49e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing @Override 50e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing protected void onCreate(Bundle savedInstanceState) { 51e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing super.onCreate(savedInstanceState); 52e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing setContentView(R.layout.activity_paged_list_view); 53e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 54e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mPagedListView = findViewById(R.id.paged_list_view); 55e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 56e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing ListItemAdapter adapter = new ListItemAdapter(this, 57d0e9e80e8d49a82d43cda017f10df9a609cd6102Yao, Yuxing new SampleProvider(this), ListItemAdapter.BackgroundStyle.PANEL); 58e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mPagedListView.setAdapter(adapter); 59e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mPagedListView.setMaxPages(PagedListView.UNLIMITED_PAGES); 60e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing } 61e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 62e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing private static class SampleProvider extends ListItemProvider { 63e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing private Context mContext; 64e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing private List<ListItem> mItems; 65e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 662d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing private View.OnClickListener mOnClickListener = v -> 672d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing Toast.makeText(mContext, "Clicked!", Toast.LENGTH_SHORT).show(); 682d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing 69e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing private View.OnClickListener mGetParentHeight = (v) -> { 70e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing int parentHeight = ((FrameLayout) v.getParent().getParent().getParent()).getHeight(); 71e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing Toast.makeText(v.getContext(), 72e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing "card height is " + pixelToDip(mContext, parentHeight) + " dp", 73e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing Toast.LENGTH_SHORT).show(); 74e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing }; 75e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 76e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing private ListItemProvider.ListProvider mListProvider; 77e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 78e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing SampleProvider(Context context) { 79e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mContext = context; 80e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems = new ArrayList<>(); 81e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 82e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 832d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing .withOnClickListener(mOnClickListener) 84e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionIcon(android.R.drawable.sym_def_app_icon, true) 852d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing .withTitle("clickable single line with full icon and one action") 86e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withAction("card height", true, mGetParentHeight) 87e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 88e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 89e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 90e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("primary action set by drawable") 91e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionIcon(mContext.getDrawable(R.drawable.pressed_icon), true) 92e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withViewBinder(vh -> vh.getPrimaryIcon().setClickable(true)) 93e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 94e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 95e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 962d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing .withOnClickListener(mOnClickListener) 97e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionIcon(android.R.drawable.sym_def_app_icon, false) 982d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing .withTitle("clickable single line with small icon and clickable end icon") 99e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withSupplementalIcon(android.R.drawable.sym_def_app_icon, true, 100e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mGetParentHeight) 101e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 102e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 103e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 1042d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing .withOnClickListener(mOnClickListener) 105e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionEmptyIcon() 1062d99408bc504324ae6038f57f8489d8ec75585bbYao, Yuxing .withTitle("clickable single line with empty icon and end icon no divider") 107e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withSupplementalIcon(android.R.drawable.sym_def_app_icon, false) 108e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 109e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 110e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 111e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("title is single line and ellipsizes. " 112e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing + mContext.getString(R.string.long_text)) 113e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withSupplementalIcon(android.R.drawable.sym_def_app_icon, true) 114e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 115e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 116e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 117e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionNoIcon() 118e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("single line with two actions and no divider") 119e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withActions("action 1", false, 120e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing (v) -> Toast.makeText( 121e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing v.getContext(), "action 1", Toast.LENGTH_SHORT).show(), 122e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing "action 2", false, 123e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing (v) -> Toast.makeText( 124e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing v.getContext(), "action 2", Toast.LENGTH_SHORT).show()) 125e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 126e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 127e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 128e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionNoIcon() 129e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("single line with two actions and action 2 divider") 130e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withActions("action 1", false, 131e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing (v) -> Toast.makeText( 132e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing v.getContext(), "action 1", Toast.LENGTH_SHORT).show(), 133e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing "action 2", true, 134e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing (v) -> Toast.makeText( 135e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing v.getContext(), "action 2", Toast.LENGTH_SHORT).show()) 136e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 137e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 138e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 139e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionNoIcon() 140e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("single line with divider between actions. " 141e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing + mContext.getString(R.string.long_text)) 142e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withActions("action 1", true, 143e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing (v) -> Toast.makeText( 144e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing v.getContext(), "action 1", Toast.LENGTH_SHORT).show(), 145e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing "action 2", false, 146e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing (v) -> Toast.makeText( 147e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing v.getContext(), "action 2", Toast.LENGTH_SHORT).show()) 148e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 149e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 150e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 151e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionIcon(android.R.drawable.sym_def_app_icon, true) 152e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("double line with full icon and no end icon divider") 153e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withBody("one line text") 154e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withSupplementalIcon(android.R.drawable.sym_def_app_icon, false, 155e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mGetParentHeight) 156e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 157e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 158e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 159e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionIcon(android.R.drawable.sym_def_app_icon, false) 160e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("double line with small icon and one action") 161e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withBody("one line text") 162e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withAction("card height", true, mGetParentHeight) 163e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 164e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 165e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing String tenChars = "Ten Chars."; 166e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 167e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionIcon(android.R.drawable.sym_def_app_icon, false) 168e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("Card with small icon and text longer than limit") 169e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withBody("some chars") 170e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withBody(TextUtils.join("", Collections.nCopies(20, tenChars))) 171e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withSupplementalIcon(android.R.drawable.sym_def_app_icon, true, 172e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mGetParentHeight) 173e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 174e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 175e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 176e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionEmptyIcon() 177e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("double line with empty primary icon." 178e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing + mContext.getString(R.string.long_text)) 179e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withBody("one line text as primary", true) 180e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withActions("screen size", false, (v) -> { 181e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing Context c = v.getContext(); 182e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing Point size = new Point(); 183e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing c.getSystemService(WindowManager.class).getDefaultDisplay().getSize(size); 184e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 185e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing Toast.makeText(v.getContext(), 186e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing String.format("%s x %s dp", pixelToDip(c, size.x), 187e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing pixelToDip(c, size.y)), Toast.LENGTH_SHORT).show(); 188e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing }, "card height", true, mGetParentHeight) 189e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 190e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 191e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 192e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withTitle("double line with no primary action and one divider") 193e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withBody("one line text as primary", true) 194e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withActions("screen size", false, (v) -> { 195e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing Context c = v.getContext(); 196e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing Point size = new Point(); 197e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing c.getSystemService(WindowManager.class).getDefaultDisplay().getSize(size); 198e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 199e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing Toast.makeText(v.getContext(), 200e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing String.format("%s x %s dp", pixelToDip(c, size.x), 201e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing pixelToDip(c, size.y)), Toast.LENGTH_SHORT).show(); 202e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing }, "card height", true, mGetParentHeight) 203e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 204e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 205e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 206e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionIcon(android.R.drawable.sym_def_app_icon, true) 207e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withBody("Only body - no title is set") 208e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withAction("card height", true, mGetParentHeight) 209e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 210e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 211e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mItems.add(new ListItem.Builder(mContext) 212e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withPrimaryActionIcon(android.R.drawable.sym_def_app_icon, false) 213e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .withBody("Only body - no title. " + mContext.getString(R.string.long_text)) 214e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing .build()); 215e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 21622037e659c30185f51f522e1761236f780334c9dYao, Yuxing mItems.add(new ListItem.Builder(mContext) 21722037e659c30185f51f522e1761236f780334c9dYao, Yuxing .withTitle("Switch - initially unchecked") 21822037e659c30185f51f522e1761236f780334c9dYao, Yuxing .withSwitch(false, true, (button, isChecked) -> { 21922037e659c30185f51f522e1761236f780334c9dYao, Yuxing Toast.makeText(mContext, 22022037e659c30185f51f522e1761236f780334c9dYao, Yuxing isChecked ? "checked" : "unchecked", Toast.LENGTH_SHORT).show(); 22122037e659c30185f51f522e1761236f780334c9dYao, Yuxing }) 22222037e659c30185f51f522e1761236f780334c9dYao, Yuxing .build()); 22322037e659c30185f51f522e1761236f780334c9dYao, Yuxing 224e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing mListProvider = new ListItemProvider.ListProvider(mItems); 225e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing } 226e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 227e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing @Override 228e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing public ListItem get(int position) { 229e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing return mListProvider.get(position); 230e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing } 231e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing 232e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing @Override 233e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing public int size() { 234e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing return mListProvider.size(); 235e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing } 236e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing } 237e048d0d3137fbee6430d3481aaa7269d221a7d45Yao, Yuxing} 238