Android替换Listview使用RecycleView显示简单数据

时间:2016-09-09 15:16:15

标签: android listview android-recyclerview

我正在学习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会为我的情况做些什么?

1 个答案:

答案 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因为它没有问题,如果你想要它很简单,因为它也适用于它的属性。