2012-12-01 6 views
1

아래 코드에서 알 수 있듯이 항목 (항목 1, 항목 2 또는 항목 3)을 클릭하면 TextView에 " 항목 1 ","항목 2 "또는"항목 3 ".TextView를 사용하여 ListView의 항목에 대한 추가 정보 표시

그러나 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]); 
    } 
} 

답변

1

나는 getItemAtPosition(position)을 사용하여 선택한 항목을 객체로 가져올 수 있다고 생각합니다. 그런 다음이 객체의 정보를 사용할 수 있습니다.

0

그런 경우 BaseAdapter를 사용해야합니다. 이 걷기를 보아라. http://anujarosha.wordpress.com/2011/11/30/how-to-use-baseadapter-and-onitemclicklistener-in-android/

편집 : ArrayAdapter와 단 하나의 문자열을 표시 할 수 있기 때문에

당신은 BaseAdapter를 구현해야합니다.

Item의 목록이있는 구현을 참조하십시오. 각 항목에는 이름과 연락처가 있습니다.

이 BaseAdapter를 ArrayAdapter 대신 설정해야합니다.

BaseAdapter는 getView() 메소드의 레이아웃을 팽창시켜 뷰를 작성합니다. Layout에는 두 개의 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; 
    } 

} 
1

당신은 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)); 
} 
관련 문제