从下面的代码中可以看出,当我点击项目(项目1,项目2或项目3)时,我的TextView将显示字符串,即“项目1”,“项目2”或“第3项“。
但是,当我点击该项目时,我希望TextView显示的是有关该项目的其他信息,例如姓名,联系人等。
我无法弄清楚我是怎么做到的。任何人都可以提出一些建议吗?
public class ListA extends ListActivity {
private TextView selection;
private static final String[] items={"Item 1", "Item 2", "Item 3"};
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_list);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
items));
selection=(TextView)findViewById(R.id.selection);
}
@Override
public void onListItemClick(ListView parent, View v, int position,
long id) {
selection.setText(items[position]);
}
}
答案 0 :(得分:1)
我认为您可以使用getItemAtPosition(position)
将所选项目作为对象。然后你可以使用这个对象的信息。
答案 1 :(得分:0)
在这种情况下你应该使用BaseAdapter。看到这个。 http://anujarosha.wordpress.com/2011/11/30/how-to-use-baseadapter-and-onitemclicklistener-in-android/
编辑:
您必须实现BaseAdapter,因为ArrayAdapter只能显示一个String。
请参阅我的实现,其中包含Item列表。每个项目都包含名称和联系人。
您需要设置此BaseAdapter来代替ArrayAdapter。
BaseAdapter通过从方法getView()中的布局进行膨胀来创建视图。布局有两个TextView。
在该方法中,我们还将名称和联系人设置为两个TextView。
public class Item
{
private String name;
private String contact;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
}
public class Adapter1 extends BaseAdapter
{
private List<Item> items;
private LayoutInflator inflator;
public Adapter1(List<Item> items, LayoutInflator inflator) {
super();
this.items = items;
this.inflator = inflator;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if(convertView != null)
view = convertView;
else
view = inflator.inflate(R.layout.item_layout, parent, false);
Item item = (Item) getItem(position);
((TextView) view.findViewById(R.id.textName)).setText(item.getName());
((TextView) view.findViewById(R.id.textContact)).setText(item.getContact());
return view;
}
}
答案 2 :(得分:0)
您可以使用ArrayList,然后继续尝试使用此代码,
mList = new ArrayList<String>();
mList.add("Item 1");
mList.add("Item 2");
mList.add("Item 3");
mList.add("Item 4");
mList.add("Item 5");
和onItemClick代码:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
selection.setText(mList.get(position));
}