2012-07-28 23 views
0

我使用了自定義行至極一個ListView中有2個TextViews。我已經制作了自己的適配器,並且它與我的列表正常工作。現在,我希望用戶輸入2個文本,然後在我的ListView中插入一個新行(用戶輸入)。我試着用add方法,但我得到UnsupportedOperationException。我是否也必須重寫add方法?如果是的話,我需要做些什麼?謝謝。如何修改幾個textviews同一行一個ListView

我要粘貼代碼的片段。讓我知道你是否需要進一步的信息。

public class ChatAdapter extends ArrayAdapter<ChatItems>{ 

Context context; 
int textViewResourceId; 
ChatItems[] objects; 


public ChatAdapter(Context context, int textViewResourceId, 
     ChatItems[] objects) { 
    super(context, textViewResourceId, objects); 

    this.context = context; 
    this.textViewResourceId = textViewResourceId; 
    this.objects = objects; 
} 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    ChatHolder holder = null; 


    if(row == null){ 
    LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
    row = inflater.inflate(textViewResourceId, null); 

    holder = new ChatHolder(); 
    holder.user = (TextView) row.findViewById(R.id.textUser); 
    holder.msg = (TextView) row.findViewById(R.id.textText); 

    row.setTag(holder); 

    }else 
     holder = (ChatHolder) row.getTag(); 


    ChatItems items = objects[position]; 
    holder.msg.setText(items.msg); 
    holder.user.setText(items.user); 


    return row; 

} 
static class ChatHolder{ 
    TextView user; 
    TextView msg; 
} 

}

public class ChatItems { 

String user; 
String msg; 

public ChatItems(String user, String msg){ 
    this.user = user; 
    this.msg = msg; 
} 

}

回答

1

如果你想添加另一項到你的ArrayAdapter使用ArrayList而不是Array作爲你的後端數據的持有者。如果您使用的Array,比ArrayAdapter將使用內部List不能在以後修改。

從您的ChatAdapterobjects場。

重寫你的構造類似

public ChatAdapter(Context context, int textViewResourceId, List<ChatItems> objects) { 
    super(context, textViewResourceId, objects); 
    this.context = context; 
    this.textViewResourceId = textViewResourceId; 
} 

以獲得該項目在getView()使用ChatItems items = getItem(position)代替ChatItems items = objects[position];

最後創建適配器像adapter = new ChatAdapter(this, R.layout.chat_item, new ArrayList<ChatItems>());

+0

謝謝您的快速ansers!你們都是對的(Sa Dec)。我正在使用一個簡單的數組而不是ArrayList。一旦改變它正常工作。 – Godraude 2012-07-28 14:52:54

3

我猜你使用的不可變列表,因此它提出UnsupportedOperationException當你試圖元素(S)添加到列表中。考慮使用ArrayList或可變的東西。

如果您可以提供的logcat那麼它將幫助(我們)更多。

0

http://developer.android.com/reference/android/widget/ArrayAdapter.html

「 然而TextView的引用,將填充有toString()將陣列中的每個對象的。可以添加列表或自定義對象的陣列。覆蓋的toString()方法你的對象,以確定哪些文本將顯示在列表中的項目。

您需要用適配器比列表視圖本身多玩,列表視圖後,所有使用的適配器。

那個文件夾應該包含你所需要的所有信息。 祝你好運!請記住發佈您的解決方案。