首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android EditText 內容動態添加到 ListView 完整實現 (聊天界面模式)

     編輯:程式設計綜合問答

核心組件與數據流

  • 佈局:`ListView` (上) + `LinearLayout` (下,含 `EditText` + `Button`)。
  • 數據源:`ArrayList messages`。
  • 適配器:`ArrayAdapter adapter` 綁定 `messages`。

關鍵代碼

// 初始化
ListView lv = findViewById(R.id.listView);
EditText et = findViewById(R.id.editText);
Button btn = findViewById(R.id.button);
ArrayList data = new ArrayList<>();
ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
lv.setAdapter(adapter);

// 發送按鈕點擊
btn.setOnClickListener(v -> {
    String text = et.getText().toString().trim();
    if (!text.isEmpty()) {
        data.add(text);           // 1. 更新數據源
        adapter.notifyDataSetChanged(); // 2. 通知視圖刷新
        et.setText("");           // 3. 清空輸入框
        lv.smoothScrollToPosition(data.size() - 1); // 4. 滾動到底部
    }
});

進階優化:RecyclerView + ViewHolder

ListView 已過時,新項目請使用 `RecyclerView`:

  • 自動 View 回收,大數據流暢。
  • 支持多佈局類型 (發送/接收氣泡)。
  • 內置動畫 (ItemAnimator)。

佈局 XML 關鍵點

<LinearLayout android:orientation="vertical" ...>
    <ListView android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" /> <!-- 佔滿剩餘空間 -->
    <LinearLayout android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText android:id="@+id/editText"
            android:layout_width="0dp" android:layout_weight="1" .../>
        <Button android:id="@+id/button" android:text="發送" .../>
    </LinearLayout>
</LinearLayout>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved