2016-06-12 76 views
2

我有一個保存按鈕:如何使按鈕添加的EditText輸入到ListView

<Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Save" 
     android:id="@+id/save" 
     android:layout_below="@+id/editText" 
     android:background="@android:color/holo_blue_light" 
     android:textColor="@android:color/white" 
     android:textSize="20dp" 
     android:onClick="saveEvent"/> 

,並按下它的時候,我希望它的輸入的EditText添加到ListView。順便說一句,Listview和EditText + Save Button元素在不同的XML佈局上。

我有一個名爲SaveEvent的活動,按下保存按鈕時發生。我如何讓它將EditText輸入添加到ListView元素?

非常感謝。

一塊MakeEvent.java的:

public void saveEvent(View view) { 
    Intent intent = new Intent(this, SaveEvent.class); 
    startActivity(intent); 
} 

SaveEvent.java:

package com.kass.planner; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 

import java.util.ArrayList; 

public class SaveEvent extends Activity implements View.OnClickListener{ 

    private Button btn; 
    private EditText et; 
    private ListView lv; 
    ArrayList<String> list = new ArrayList<String>(); 
    ArrayAdapter<String> adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btn = (Button) findViewById(R.id.save); 
     btn.setOnClickListener(this); 
     et = (EditText) findViewById(R.id.editText); 
     adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, list); 

     // set the lv variable to your list in the xml 
     lv = (ListView) findViewById(R.id.event_list); 
     lv.setAdapter(adapter); 
    } 

    public void onClick(View v) { 
     String input = et.getText().toString(); 
     if (input.length() > 0) { 
      // add string to the adapter, not the listview 
      adapter.add(input); 
      // no need to call adapter.notifyDataSetChanged(); as it is done by the adapter.add() method 
     } 
    } 

但這代碼不起作用...... ^謝謝大家。

+0

此代碼應該工作,假設你想顯示該列表視圖內的SaveEvent活動 –

+0

我認爲你應該澄清「列表視圖和EditText +保存按鈕元素在不同的XML佈局」,因爲你怎麼樣能夠在單個Activity中引用這些佈局上的不同視圖? –

+0

回覆您的其他評論。開始簡單。所以一個XML和一個活動。根元素是一個垂直的LinearLayout。它有2個元素。一個RelativeLayout和一個ListView。在RelativeLayout中放置EditText和按鈕。然後開始連接Java代碼 –

回答

-2

在從板球傢伙啓迪和重新審視我的一些舊的程序 而非更新適配器對象

只更新下劃線數據 並調用下面的方法與更新的適配器對象

綁定列表視圖對象
public void fillList() { 

    ArrayAdapter<String> adapter= new ArrayAdapter<>(context,android.R.layout.simple_list_item_1,getItems()); 
    lv.setAdapter(adapter); 

    } 

I agree。沒有內存效率,但它效果不錯

+0

它已經綁定...如何重新綁定它有幫助? –

+0

我對此表示懷疑,但是所有閃亮的獎牌都有應有的啓發。你有什麼想法?和下來投票是不是很愉快:-( – Aelaf

+0

我只是問你爲什麼認爲這是解決方案,也許更新答案與更多的細節將有助於其他人的問題。爲了啓發你,首先,建議嘗試來運行代碼或者理解API的實現,例如,重新設置適配器不是必須的,因爲適配器本身沒有改變,只有基礎數據;其次,如果你嘗試運行這些代碼時,的問題,我覺得列表應該按預期更新 –

相關問題