繁体   English   中英

理解'getView()'

[英]Understanding 'getView()'

我有一个数组,我需要访问依赖于listView中的哪个项目的元素。

发送到getView()方法的第一个int值,即int arg0,这是已单击的数组元素的ID? 我是否需要从listview onClickListner分配ID?

public View getView(int arg0, View arg1, ViewGroup arg2) {
}

我相信必须实现以下两种重叠方法:

@Override
public Object getItem(int arg0) {
    return null;
}

@Override
public long getItemId(int arg0) {
    return 0;
}

目前我的应用程序只允许我访问数组的元素0(第一个元素)所以我相信它忽略其他19个元素,无论我点击列表视图中的哪个项目。

private List<GeoName> names = new ArrayList<GeoName>();

@Override
public Object getItem(int arg0) {
    return null;
}

@Override
public long getItemId(int arg0) {
    return 0;
}


@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {

    GeoName location = this.names.get(arg0);

    Location l = location.getGeometry().getLocation();

    Latt = l.getLat();
    Longg = l.getLng();

从上面的代码中,当调用name.get()'方法时,是否应该为'arg0'自动分配元素ID值?

ListView中的每个项目都是一个视图,getView负责为Listview创建这些视图。 以下是Android文档的摘录:

public abstract View getView (int position, View convertView, ViewGroup parent)

**Parameters**

position:项目在我们想要的视图项的适配器数据集中的位置。 convertView:如果可能的话,重用旧视图。 注意:在使用之前,应检查此视图是否为非null且类型是否合适。 如果无法转换此视图以显示正确的数据,则此方法可以创建新视图。 异构列表可以指定它们的视图类型数,以便此View始终是正确的类型(请参阅getViewTypeCount()和getItemViewType(int))。 parent:此视图最终将附加到的父级

以下是有关如何为ListView实现侦听器的示例代码段:

lv = (ListView) findViewById(R.id.listview);
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listview_array));
lv.setOnItemClickListener(new OnItemClickListener()
{
    public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
    {
        AlertDialog.Builder adb = new AlertDialog.Builder(
        ListviewOnclickExample.this);
        adb.setTitle("ListView OnClick");
        adb.setMessage("Selected Item is = "+ lv.getItemAtPosition(position));
        adb.setPositiveButton("Ok", null);
        adb.show();                     
    }
 });

我建议您使用ConvertView和ViewHolder样式使Listview有效。 是一个很好的链接,描述了这种风格的工作原理。 您可以在此处从我的实施此样式中下载完整的示例

getView与点击无关。 它获取列表中第N个位置的视图,其中N是第一个参数。 它应该只由ListView本身调用,它由ListView用于在滚动时初始化其视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM