Android getListView()将函数更改为Gridview

时间:2016-08-22 11:12:41

标签: android listview gridview

@Override
public void onViewCreated (View view, Bundle savedInstanceState) {

    // Hashmap for ListView
    albumsList = new ArrayList<HashMap<String, String>>();

    // Loading Albums JSON in Background Thread
    new LoadAlbums().execute();


    // get listview
    ListView lv = getListView();

    lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                                long arg3) {
                   .................
        }
    });
}

您好,这是我的代码如何获取ListView并创建setOnItemClickListener。但是,我需要创建GridView而不是ListView。

ListView lv = getListView();

如何更改此行以获取GridView?

3 个答案:

答案 0 :(得分:4)

  

虽然您接受了使用GrdView的答案,但我仍然愿意   提高我的声音,RecyclerView比ListView更好,更优化   和GridView。

     

我仍然建议使用RecyclerView代替   ListView或Gridview。

以下是鼓励使用RecyclerView

的一些观点

Android创建了RecyclerView作为ListView改进,所以是的,您可以使用ListView控件创建附加列表,但使用RecyclerView更容易:

  1. 向上/向下滚动时重复使用单元格 - 这可以通过在listView适配器中实现View Holder来实现,但这是可选的,而在RecycleView中它是编写适配器的默认方式。 / LI>
  2. 将列表与其容器分离 - 因此您可以使用设置LayoutManager在运行时轻松地将列表项放在不同的容器(linearLayout, gridLayout )中。
    示例:
  3. mRecyclerView =(RecyclerView)findViewById(R.id.my_recycler_view); mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

    mRecyclerView.setLayoutManager(new GridLayoutManager(this,2));

    1. 动画常用列表操作 - 动画被解耦并委托给ItemAnimator。 有关RecyclerView的更多信息,但我认为这些是主要的。
    2. 因此,总而言之,RecyclerView是一个更灵活的控制,用于处理“列表数据”,遵循关注委托模式,并为自己留下一个任务 - 回收项目。

答案 1 :(得分:0)

在布局中定义GridView

GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            Toast.makeText(HelloGridView.this, "" + position,
                    Toast.LENGTH_SHORT).show();
        }
    });

答案 2 :(得分:0)

我从您的代码中了解到,您正在将图像从互联网加载到gridview中。您应该按照以下步骤正确加载带有图像的gridview -

1 - 在你的选择中添加一个gridview并获得它

GridView gridView = mView.findViewById(R.id.yourgridId);

2 - 然后定义一个扩展BaseAdapter的类,它将为您的GridView保存数据并用它填充GridView并覆盖它的getView()方法,它将成为单个网格的布局。

3-致电gridView.setAdapter(adapter);以使用gridview设置适配器

4-在后台线程中加载图像并添加一个响应的监听器

5 - 当你在听众中得到回应时,将图像添加到你的Arraylist&lt; Bitmap&gt;在Adapter类中,调用notifyDataSetChanged()来刷新GridView