2012-03-20 167 views
1

我有一個複選框,圖像和文本字段的列表視圖。現在我想在文本字段中顯示多個項目。問題是我想要整齊的柱子裏的參數。我可以以某種方式在文本字段中設置製表符或格式或類似的內容,還是必須實際製作更多文本字段並在各自的字段中設置每個值?如何在Android/Java listview中顯示多個文本項?

我的目錄應該看起來有點像:

[Image] [checkbox] "arg11 arg12 arg13" 
[Image] [checkbox] "arg21 arg22 arg23" 
[Image] [checkbox] "arg31 arg32 arg33" 

感謝您的任何意見。

編輯:只是爲了澄清事情。我有一個工作列表視圖/適配器與圖像/複選框和一個文本框已經。我對Android很陌生,所以我想知道是否有一種優雅的方式來處理在文本字段中顯示幾個文本項目。在Windows中,我會簡單地使用tabstopps,他們會看起來有序並且在一列中,但我不知道我周圍的android方式是否知道是否有類似的東西,或者是否需要單個文本字段來獲取列中的文本字段。

回答

2

您應該重新在行xml上工作。我想你可能知道行xml,你可以將每一行的設計拼湊起來。採用相對或線性佈局並添加視圖,如下所示。

[Image] [checkbox] "text1" "text2 "text3" 
[Image] [checkbox] "text1" "text2 "text3" 
[Image] [checkbox] "text1" "text2 "text3" 

而不是採取標籤空格,採取三個不同的TextView的。爲每個TextView保留「1」作爲權重,並將它們添加到總權重和爲3的LinearLayout中。因此,所有三個TextView將同等放置在父視圖中。

試試這個,還是讓我知道你是否固定它.....

+0

謝謝,這聽起來interessting,我會嘗試。 – HardCoder 2012-03-20 07:35:38

1

基本上你需要爲你的ListView實現自己的適配器。

首先,您需要創建自己的適配器類,它既可以是baseAdapter,也可以是它們的派生類。然後您需要在其中實現ListView項目顯示邏輯。

像設置您textViews,imageViews等

檢查本教程以獲得更多信息。

http://www.vogella.de/articles/AndroidListView/article.html

+0

您好,感謝您的回覆。我認爲已經做了你所提到的(在我的文章中對此進行了澄清)。我想知道什麼是以列顯示文本的最佳方式。 – HardCoder 2012-03-20 06:50:54

+1

如果希望文本視圖均勻分佈,則可以使用TableLayout或結構化(帶有重量)的LinearLayout。 – josephus 2012-03-20 07:04:39

+0

最好的方法是讓每個文本項目都有一個TextView。但是您也可以使用一個TextView,然後根據您的需要連接它。 – 2012-03-20 07:05:18

0

從我前面的帖子之一:每當你想要做的處理,在一個ListView意見

你 需要創建一個自定義的適配器將處理您的邏輯 實施和必要時將這些信息傳遞給觀點。

0

如果您確定關於文本的大小,那麼你可以在你的文本中使用製表位。如果這不起作用,那麼你就堅持擴展你的行佈局。正如Pavandroid提到的那樣

3

您創建了新的xml say row.xml,我們可以在每個列的listview內爲它們充氣。

然而,您想要的設計行,例如:

行。XML

<LinearLayout android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
     android:orientation="horizontal"> 
    <ImageView ..../> 
    <CheckBox ...../> 
    <TextView ...../> 
    <TextView ...../> 
</LinearLayout> 

然後使用CustomAdapter您的ListView

一樣,

listView.setAdapter(new CustomAdapter()); 

CustomAdapter,

class CustomAdapter extends BaseAdapter{ 
    publicCustomAdapter() { 
     mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 



    @Override 
    public int getCount() { 
     return xyz.size(); 
    } 

    @Override 
    public String getItem(int position) { 
     return xyz.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder holder = null; 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.row, null); 
      holder = new ViewHolder(); 
     holder.imageView = (ImageViewView)convertView.findViewById(R.id.image); 
     holder.checkbox = (CheckBox)convertView.findViewById(R.id.checkbox); 
      holder.textView1 = (TextView)convertView.findViewById(R.id.text1); 
      holder.textView2 = (TextView)convertView.findViewById(R.id.text2); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder)convertView.getTag(); 
     } 
     //TODO set the values for views and return view 
     return convertView; 
    } 

} 
相關問題