我正在学习android程序几天但是现在我想知道在listview中使用适配器。请帮助我理解这个主题。我正在学习的代码在下面
dictionaryListView.setAdapter(new BaseAdapter() {
@Override
public View getView(int position, View view, ViewGroup arg2) {
if (view==null) {
view=getLayoutInflater().inflate(R.layout.list_item, null);
}
TextView textView=(TextView) view.findViewById(R.id.listItemTextView);
textView.setText(allWordDefinitions.get(position).word);
return view;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return allWordDefinitions.size();
}
});
dictionaryListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long arg3) {
Intent intent =new Intent(DictionaryListActivity.this, WordDefinitionDetailActivity.class);
intent.putExtra("word", allWordDefinitions.get(position).word);
intent.putExtra("definition", allWordDefinitions.get(position).definition);
startActivity(intent);
}
});
这里有什么需要setadapter方法
答案 0 :(得分:6)
引用文档
Adapter对象充当AdapterView与该视图的基础数据之间的桥梁。适配器提供对数据项的访问。适配器还负责为数据集中的每个项目创建视图。
您使用BaseAdapter
覆盖getView
,在其中展开自定义布局并返回视图对象。
http://developer.android.com/reference/android/widget/BaseAdapter.html
view=getLayoutInflater().inflate(R.layout.list_item, null);// inflate custom layout
和
return view;
所以每行都有一个textview。
@Override
public View getView(int position, View view, ViewGroup arg2) {
if (view==null) { // only when view in null inflate the layout
view=getLayoutInflater().inflate(R.layout.list_item, null);
}
TextView textView=(TextView) view.findViewById(R.id.listItemTextView);
// initialize the textview
textView.setText(allWordDefinitions.get(position).word);
// set text to textview
// position is the index
return view; // return view
}
getCount
返回列表的大小,即return allWordDefinitions.size();
。这表示listview中的行数。
另请阅读How ListView's recycling mechanism works
您还应该考虑使用ViewHolder
模式。
http://developer.android.com/training/improving-layouts/smooth-scrolling.html
答案 1 :(得分:0)
Adapter对象充当AdapterView和之间的桥梁 该视图的基础数据。适配器提供对数据的访问 项目。适配器还负责为每个项目创建一个View 在数据集中。
适配器负责为ListView(或其他基于AbsListView的类)中的每个项创建视图,并使用您提供的数据来填充视图。
答案 2 :(得分:0)
enter code here
来自Android doc
Adapters in Android are a bridge between the Adapter View (e.g. ListView)
and the underlying data for that view. Imagine what would
have been the world without adapters!
如果没有适配器,要实现ListView
功能,您需要:
在TextView
组中创建ScrollView
。
然后,您将必须为TextView
的内容实现分页概念。
您还必须编写其他代码以识别TextView中特定行的单击事件。
此处需要了解more
的链接答案 3 :(得分:0)
适配器是用于获取数据并将其附加到布局控件的组件。
getView()
适配器中的此方法将在每次创建列表项时调用,您将使用它将每个数据附加到特定控件中
getItemId()
此方法您将实现它以返回附加到列表项的每个数据的ID,以便获得
onitemclick
ListView
事件中的此ID
getItem
此方法与getItemId
类似但返回对象本身
此方法getCount
将返回适配器将为您创建的列表项的计数,并知道将为您调用getView
方法的时间