我正在学习RecycleView,只是想知道如何以与Listview相同的方式显示数据。
public class MainActivity extends AppCompatActivity {
String[] mobileArray = {"Android","IPhone","WindowsMobile",
"Blackberry","WebOS","Ubuntu","Windows7","Max OS X"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listview, mobileArray);
ListView listView = (ListView) findViewById(R.id.mobile_list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getApplication(), mobileArray[i],
Toast.LENGTH_LONG).show();
}
});
}
}
以上编码只是使用ArrayAdapter在ListView中显示数组。单击该项目时,它将Toast该位置值。
对于Recycleview来说同样的事情,我在网上看到了一些包含很多编码行甚至是单独文件的例子。 Recycleview真的需要这么多行编码来显示这样一个简单的数组吗?
String[] mobileArray = {"Android","IPhone","WindowsMobile",
"Blackberry","WebOS","Ubuntu","Windows7","Max OS X"};
任何人都可以提供一个最简单的示例,用onItemClick在RecycleView中显示数组然后在Toast中显示该位置?或者我做错了,因为Recycleview用来做一些更复杂的事情,或者只是listview会为我的情况做些什么?
答案 0 :(得分:2)
RecyclerView.Adapter
的设计方式是您无法使用的简单ArrayAdapter
。它使用起来非常简单。如This Good Answer
listview
以上的优惠有以下好处
1)ViewHolder Pattern
在ListView中,建议使用ViewHolder模式 从来都不是强迫。对于RecyclerView,这是强制性的 使用RecyclerView.ViewHolder类。这是主要的一个 ListView和RecyclerView之间的差异。
它使RecyclerView中的事情变得更复杂,但很多 我们在ListView中遇到的问题得到了有效解决。
2)LayoutManager
这是RecyclerView带来的另一项重大改进。在一个 ListView,唯一可用的视图类型是垂直ListView。 甚至没有官方的方法来实现水平ListView。
现在使用RecyclerView,我们可以有一个
i)LinearLayoutManager - 支持垂直和水平 列表,
ii)StaggeredLayoutManager - 支持交错的Pinterest 列表,
iii)GridLayoutManager - 支持显示网格,如图所示 图库应用。
最棒的是我们可以根据需要动态完成所有这些操作。
3)物品动画师
ListViews缺乏对好动画的支持,但是 RecyclerView为它带来了全新的维度。使用 RecyclerView.ItemAnimator类,动画视图变得如此之多 简单直观。
4)项目装饰
对于ListViews,动态装饰项目,如添加边框 或分隔线从来都不容易。但在RecyclerView的情况下, RecyclerView.ItemDecorator类为开发人员提供了巨大的控制权 但是让事情变得更加耗时和复杂。
5)OnItemTouchListener
由于它的阻止,拦截ListView上的项目很简单 AdapterView.OnItemClickListener接口。但RecyclerView给出了 通过它为开发人员提供更多的权力和控制权 RecyclerView.OnItemTouchListener但它使事情变得复杂 开发者。
此外,您可以按照定义的here定义onClick
,但这有点难。
但是你可以使用listview
因为它没有问题,如果你想要它很简单,因为它也适用于它的属性。