首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListView未在项目上显示文本

问ListView未在项目上显示文本
EN

Stack Overflow用户
提问于 2016-04-10 23:03:45
回答 2查看 1.5K关注 0票数 0

我希望显示来自editText的文本输入,并使用ArrayAdapter将其显示在listView中,单击按钮时,listView确实会得到添加的项,但不包含文本:

以下是代码:

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.blink.blink.MainActivity">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="61dp">

            <EditText
                android:layout_width="280dp"
                android:layout_height="60dp"
                android:hint="Type a quote ..  "
                android:id="@+id/quoteField" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="60dp"
                android:text="Add Quote"
                android:id="@+id/addQuote"
                android:fontFamily="sans-serif-condensed"
                android:background="#f6546a"
                android:layout_marginLeft="10dp"
                android:layout_toRightOf="@id/quoteField" />
        </RelativeLayout>
        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/quotelistView"
            android:foreground="#f6546a"/>

</LinearLayout>

以及:

代码语言:javascript
复制
    public class MainActivity extends AppCompatActivity {


    Button createBtn ;
    EditText quoteField;
    ListView quotesListView;
    ArrayList<String> quotesArrayList;


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

        createBtn = (Button)  findViewById(R.id.addQuote);
        quoteField = (EditText)  findViewById(R.id.quoteField);
        quotesListView = (ListView)  findViewById(R.id.quotelistView);

        quotesArrayList = new ArrayList<>();



        createBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)
            {
                quotesArrayList.add(quoteField.getText().toString());
                SetAdapter();
                quoteField.setText(" ");
            }
        });
    }


        private void SetAdapter()
        {
            ArrayAdapter<String> Adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, quotesArrayList);
            quotesListView.setAdapter(Adapter);
        }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-10 23:15:58

每次更改数组中的数据时,都不需要重置适配器。您应该做的是保持对适配器的引用,并在更改列表中的数据时调用adapter.notifyDataSetChanged()。

代码语言:javascript
复制
 public class MainActivity extends AppCompatActivity {


    Button createBtn ;
    EditText quoteField;
    ListView quotesListView;
    ArrayList<String> quotesArrayList;
    ArrayAdapter<String> adapter;


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

        createBtn = (Button)  findViewById(R.id.addQuote);
        quoteField = (EditText)  findViewById(R.id.quoteField);
        quotesListView = (ListView) findViewById(R.id.quotelistView);

        quotesArrayList = new ArrayList<>();
        adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, quotesArrayList);
        quotesListView.setAdapter(adapter);



        createBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)
            {
                quotesArrayList.add(quoteField.getText().toString());
                adapter.notifyDataSetChanged();
                quoteField.setText(" ");
            }
        });
    }

}
票数 0
EN

Stack Overflow用户

发布于 2016-04-11 03:04:53

试试看!

代码语言:javascript
复制
createBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            quotesArrayList.add(quoteField.getText().toString());
            SetAdapter(quotesArrayList);

            quoteField.setText(" ");
        }
    });
}


    private void SetAdapter(ArrayList<String> quotesArrayList)
    {
        ArrayAdapter<String> Adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, quotesArrayList);
        quotesListView.setAdapter(Adapter);
        Adapter.notifyDataSetChanged();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36536577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档