gpt4 book ai didi

java - 了解 'getView()'

转载 作者:行者123 更新时间:2023-12-02 07:14:19 28 4
gpt4 key购买 nike

我有一个数组,需要根据单击了 listView 中的哪个项目来访问其元素。

发送到 getView() 方法的第一个 int 值,即 int arg0 是已单击的数组元素的 ID 吗?我需要在 ClickListner 上的 ListView 中分配 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(第一个元素),因此我相信无论单击 ListView 中的哪个项目,它都会忽略其他 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 中的每个项目都是一个 View ,getView 负责为 Listview 创建这些 View 。以下是 Android 文档的摘录:

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

**Parameters**

position: The position of the item within the adapter's data set of the item whose view we want. convertView: The old view to reuse, if possible. Note: You should check that this view is non-null and of an appropriate type before using. If it is not possible to convert this view to display the correct data, this method can create a new view. Heterogeneous lists can specify their number of view types, so that this View is always of the right type (see getViewTypeCount() and getItemViewType(int)). parent : The parent that this view will eventually be attached to

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

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更加高效。 Here是一个很好的链接,描述了这种风格的工作原理。您可以从我的这种风格的实现中下载完整的示例 here

关于java - 了解 'getView()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15125723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com