我对android很新,我在管理listviews方面遇到了一些麻烦...... 我正在生成一个ListView,但其中的所有项目具有相同的ID,所以当我点击它们中的任何一个时,它们都会做同样的事情(这当然不是我期望的......)
我正在从XML URL加载数据,使用SAX解析器解析它们。 这是我的适配器。我的“听”包含6行,由“&&&&”分隔的2个字符串。 然后我用:
显示列表视图 zadapter.notifyDataSetChanged();
setListAdapter(this.zadapter);
来源
class InfoAdapter extends ArrayAdapter<String> {
private ArrayList<String> items;
public InfoAdapter(Context context, int textViewResourceId, ArrayList<String> items) {
super(context, textViewResourceId, items);
this.items = items;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
String liste = items.get(position);
String[] info = liste.split("&&&");
if (liste != null) {
TextView tt = (TextView) v.findViewById(R.id.toptext);
TextView bt = (TextView) v.findViewById(R.id.bottomtext);
if (tt != null) {
tt.setText(info[0]);
}
if(bt != null){
bt.setText(info[1]);
}
Log.e(MY_DEBUG_TAG, "Debug position text"+tt.getId());
}
Log.e(MY_DEBUG_TAG, "Debug position view"+v.getId());
return v;
}
}
提前感谢您的帮助。
答案 0 :(得分:0)
您可以请求列表视图查看所选项目的索引,并将其与listadapter结合使用,以确定视图的实际数据。
答案 1 :(得分:0)
我认为您可能希望从BaseAdapter
扩展(不需要更多工作),因为ArrayAdapter<T>
的内部对象列表对您的子类是隐藏的,因此您的覆盖方法正在使用一个完全不同的对象列表。
有关详细信息,请参阅ArrayAdapter source,尤其是private List<T> mObjects
位。
答案 2 :(得分:0)
在你的调试语句中,你拥有视图的id,这是一个标识符,我认为你想要的是索引。
要触发取决于所选项目的操作,
您必须使用ListView中的setOnItemClickListener
方法并实现OnItemClickListener
接口。
方法
public void onItemClick(AdapterView<?> list, View v, int pos, long id)
是你需要的。请参阅方法here