1

我想在按下按钮时将数据添加到列表视图中。

但它没有得到更新按下按钮不知道它是如何不工作的。请帮我。

这是下面的代码

@SuppressLint("NewApi")
public class Messanger extends Activity {
ArrayAdapter<String> adapter;
ListView output;
EditText box;
String msg[];
Button btn;
int counter=0;
ArrayList<String> listItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_messanger);
    output=(ListView)findViewById(R.id.textOutput);
    box=(EditText)findViewById(R.id.textInput);
    listItems = new ArrayList<String>();
         adapter = new ArrayAdapter<String>  (Messanger.this,android.R.layout.simple_list_item_1, android.R.id.text1, listItems);
    output.setAdapter(adapter);
    btn=(Button)findViewById(R.id.btnSend);
    btn.setOnClickListener(new OnClickListener()
    {

        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Toast.makeText(Messanger.this, "in event", Toast.LENGTH_LONG).show();

            sendMessage(box.getText().toString());
            //stItems.notifyAll();


        }

    });
}
public void sendMessage(String message)
{
   listItems.add("me: "+message);
    adapter.addAll(listItems);
  adapter.notifyDataSetChanged();
}
}

我的布局看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ScrollView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:layout_weight="10"  >
    <ListView 

        android:id="@+id/textOutput"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:paddingLeft="5dp" 
        android:paddingRight="5dp" 
        android:paddingTop="5dp" />
</ScrollView>

<LinearLayout 
    android:id="@+id/linearLayout1"
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:layout_weight="100"
    android:paddingLeft="5dp" 
    android:paddingRight="5dp"
    android:paddingBottom="5dp"
    android:baselineAligned="true">
    <EditText android:layout_weight="1" android:id="@+id/textInput"
        android:layout_height="45dp" android:layout_width="fill_parent">
        <requestFocus></requestFocus>
    </EditText>
    <Button android:layout_weight="1" android:text="Send"
        android:layout_height="45dp" android:layout_width="125dp"
        android:id="@+id/btnSend"></Button>
</LinearLayout>
</LinearLayout>

提前致谢

4

2 回答 2

1

不知道为什么不更新。代码对我来说看起来不错。您可以在调用之前尝试清除数组,addAll()因为如果不这样做,您最终会在列表中出现重复项(这可能不是您想要的。应该如下所示:

listItems.add("me: "+message);
adapter.clear();
adapter.addAll(listItems);
adapter.notifyDataSetChanged();

它不更新的原因可能在其他地方。发布您的布局,也许问题就在那里。

编辑:看到布局后:

是的,问题出在您的布局中。你不要把 a 放在 aListView里面ScrollView。AListView已经知道如何滚动。摆脱周围ScrollView,你应该很好。

于 2013-04-26T14:10:28.140 回答
0

请注意,您总是通过调用添加相同的项目

adapter.addAll(listItems);

不管,

尝试调试适配器中的 getView() 函数。

于 2013-04-26T14:11:12.617 回答