我正在创建一个包含自定义布局的列表视图。自定义布局内部是一个imageview。当我使用Listview lv.setonclick监听器时,它为我提供了一个变量View,我可以使用它来操纵drawable。 lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View listview,
int position, long arg3) {
ImageView pincolor = (ImageView) listview
.findViewById(R.id.ivimtrackingpin);
pincolor.setImageResource(R.drawable.pinred);
但是当我想创建另一个函数时,我没有这个View listview变量。我如何得到它,以便我可以在onclicklistener之外做同样的事情?感谢
EDIT 这是我的列表视图和适配器
SpecialAdapter adapter = new SpecialAdapter(this, list,
R.layout.imtracking_row_text, new String[] { "name",
"location" }, new int[] { R.id.tvImtrackingName,
R.id.tvImtrackingLocation });
HashMap<String, String> temp = new HashMap<String, String>();
JSONObject user = tracking_users.getJSONObject(i);
temp.put("name", user.getString("full_name"));
// upload location time
temp.put("location", user.getString("last_updated_at"));
list.add(temp);
lv.setAdapter(adapter);
public class SpecialAdapter extends SimpleAdapter {
private int[] colors = new int[]{R.drawable.row_background_grey, R.drawable.row_background_white};
public SpecialAdapter(Context context,
ArrayList<HashMap<String, String>> list, int resource,
String[] from, int[] to) {
super(context, list, resource, from, to);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
int colorPos = position % colors.length;
view.setBackgroundResource(colors[colorPos]);
return view;
}
}
答案 0 :(得分:2)
全局声明一个View并将listview分配给该视图,您可以在任何地方使用它。
答案 1 :(得分:0)
您可能希望编写自己的BaseAdapter子类或扩展您正在使用的任何ListAdapter实现并覆盖getView()。在那里你可以膨胀ListView行并对ImageView做任何必要的事情。
答案 2 :(得分:0)
您可以通过以下方式找到ImageView
:
private ImageView getImageViewAtPosition(ListView listView, int pos) {
final View line = listView.getChildAt(pos);
final ImageView image = (ImageView) line.findViewById(R.id.the_id_of_your_image_in_the_xml_layout_of_the_line);
return image;
}
如果您需要知道列表中有多少条目:
private int getCount(ListView listView) {
return listView.getChildCount();
}
更多详情here。