2011-06-26 54 views
1

對於android應用程序,我需要創建一個列表,以便我可以在同一個「項目」中輸入不同的東西。例如,列表中的每個對象都需要不同的信息(每個信息都有一個單獨的行)。具體來說,我的應用程序會爲每個列表項目需要以下內容:疼痛位置,治療,疼痛類型以及每個實例的其他類別。爲每個項目列出多個TextView

這是我迄今雲集,但只顯示每個項目一個TextView的名單上:

PACKAGE, Imports, etc. 



public class PainLoggerActivity extends Activity implements OnClickListener, 
    OnKeyListener { 
/** Called when the activity is first created. */ 
    EditText txtItem; 
    Button btnAdd; 
    ListView listItems; 
    ArrayList <String> painItems; 
    ArrayAdapter<String> aa; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    txtItem = (EditText)findViewById(R.id.txtItem); 
    btnAdd = (Button)findViewById(R.id.btnAdd); 
    listItems = (ListView)findViewById(R.id.listItems); 

    btnAdd.setOnClickListener(this); 
    txtItem.setOnKeyListener(this); 
    painItems = new ArrayList<String>(); 
    aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 
    painItems); 
    listItems.setAdapter(aa); 

    } 
private void addItem(String item){ 
    if(item.length() > 0){ 
     this.painItems.add(item); 
     this.aa.notifyDataSetChanged(); 
     this.txtItem.setText("");  
    } 

} 

@Override 
public void onClick(View v) { 

    if(v == this.btnAdd) 
     this.addItem(this.txtItem.getText().toString()); 
} 
@Override 
public boolean onKey(View v, int keyCode, KeyEvent event) { 

    if(event.getAction() == KeyEvent.ACTION_DOWN && keyCode == 
       KeyEvent.KEYCODE_DPAD_CENTER){ 
     this.addItem(this.txtItem.getText().toString()); 
    } 
    return false; 

} 

}

* 一些示例代碼,將不勝感激,所以我有一個想法如何實施建議 - 毫無疑問,我仍然是一個初學者*

回答

1

當您的適配器的佈局使用佈局「simple_list_item_1」時不可能有多個TextView項目......這就是爲什麼他們稱之爲「簡單 - 項目 - 1」。

如果每行總共需要2個TextView,則可以使用「simple_list_item_2」,但我實際上建議您使用SimpleAdapter並創建自己的行條目佈局文件。它更加靈活,您可以包含儘可能多的文本項目,圖像,複選框或任何其他您可以想到的內容,而不僅僅是一行中的幾個文本項目。

深思...

做SimpleAdapter例子搜索,看看如何實現這一點。沒什麼大不了的,你會發現這是一個「不斷贈予的禮物」。

+1

+1學習創建自己的列表項不是非常困難,並會給你無限的靈活性,讓你真正給你的應用程序一個定製的感覺。 –

+0

我試過這個,但它似乎沒有工作。我將不勝感激,如果你能在正確的方向教程點我是不是真的幫助了.... '筆記=新SimpleAdapter( \t \t \t \t此, \t \t \t \t painItems, \t \t \t \t R.layout.main, \t \t \t \t新的String [] { 「第1行」, 「第2行」}, \t \t \t \t新INT [] {R.id.txtItem, R.id.editText1}); setListAdapter(notes);' – Kgrover

+0

@Glendon,你可以給我一個簡單的概述/示例如何創建一個簡單的適配器並使用它? 此外,上面的代碼使用editText1作爲另一個textField,並且我已將列表(painItems)更改爲如下所示: 'ArrayList > painItems = new ArrayList > ();' – Kgrover

相關問題