在尝试填充活动中的ListView时,我对ArrayAdapter如何与ArrayList交互的概念感到困惑。
这是一个导致我有点困惑的指南示例: https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView
<img src="{{Product.image.url}}"/>
<h1>{{Product.title}}</h1>
<form method="POST" action="">{% csrf_token %}
{{ form_product_unit.as_p }}
<input type="submit" value="Add" />
</form>
让我们举例说,我在我的activity onCreate方法中创建了一个ArrayList和一个新的Adapter。
public class UsersAdapter extends ArrayAdapter<User> {
// View lookup cache
private static class ViewHolder {
TextView name;
TextView home;
}
public UsersAdapter(Context context, ArrayList<User> users) {
super(context, R.layout.item_user, users);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
>>>>>>> User user = getItem(position); <<<<<<<<<
// Check if an existing view is being reused, otherwise inflate the view
ViewHolder viewHolder; // view lookup cache stored in tag
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.item_user, parent, false);
viewHolder.name = (TextView) convertView.findViewById(R.id.tvName);
viewHolder.home = (TextView) convertView.findViewById(R.id.tvHome);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// Populate the data into the template view using the data object
viewHolder.name.setText(user.name);
viewHolder.home.setText(user.hometown);
// Return the completed view to render on screen
return convertView;
}
}
调用方法protected void onCreate(Bundle savedInstanceState) {
ArrayList<User> myArray = new ArrayList<User>();
User foobar = new User();
myArray.add(foobar); // Adds my new user to the arrayList
ArrayAdapter helperAdapter = new ArrayAdapter(this, myArray);
ListView lv = (ListView) findViewById(R.id.feed);
lv.setAdapter(helperAdapter);
}
后,我的ArrayList如何通过setAdapter(helperAdapter)
方法中的getItem(position)
调用查询其对象?
我没有看到对我的ArrayList的任何引用,我只是看到对象数据存储在一个临时的getView()
对象中,而我对这种情况的发生方式感到有点迷失(我附上了一张照片试图解释我迷路的地方吗?
User.java
User
答案 0 :(得分:1)
如果查看proc ttest;
where group = 'A' or 'C';
var x y;
run;
的构造函数,您将看到实际上是将UsersAdapter
作为最后一个参数传递给父类构造函数。
ArrayList<User> users
super(context, R.layout.item_user, users);
保留对您传入的用户列表的引用,并在内部使用它。如果您查看来自ArrayAdaper
的{{1}}正在做什么,只需从指定索引处的列表中返回该项。
getItem(...)
长话短说,就像在这种情况下做ArrayAdapter
一样。