我正在按照本教程进行Android开发:
我在本教程的ListView部分。到目前为止,我的应用程序具有一个文本字段,用户可以在其中输入名称。然后,他们按下按钮,其名称应被保存并出现在屏幕下半部的ListView中。我使用与教程完全相同的代码,但是我的问题是按下按钮后ListView不会显示任何内容。以下是我的一些Java和xml代码:
//MainActivity.java
package com.theboss.jackli.omgandroid;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends ActionBarActivity implements View
.OnClickListener
{
TextView mainTextView;
Button mainButton;
EditText mainEditText;
ListView mainListView;
ArrayAdapter mArrayAdapter;
ArrayList mNameList = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1. Access the TextView defined in layout XML
// and then set its text
mainTextView = (TextView) findViewById(R.id.main_textview);
mainTextView.setText("Set in Java!");
// 2. Access the Button defined in layout XML
// and listen to it here
mainButton = (Button) findViewById(R.id.main_button);
mainButton.setOnClickListener((android.view.View.OnClickListener) this);
// 3. Access the EditText defined in layout XML
mainEditText = (EditText) findViewById(R.id.main_edittext);
// todo ListView content not showing.
// 4. Access the ListView
mainListView = (ListView) findViewById(R.id.main_listview);
// Create an ArrayAdapter for the ListView
mArrayAdapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1,
mNameList);
// Set the ListView to use the ArrayAdapter
mainListView.setAdapter(mArrayAdapter);
// Also add that value to the list shown in the ListView
mNameList.add(mainEditText.getText().toString());
mArrayAdapter.notifyDataSetChanged();
// Test output to logs
for (int i = 0; i < mNameList.size(); i++)
{
String contents = mNameList.get(i).toString();
Log.d("OMG Android mNameList: ", contents);
}
}
@Override
public void onClick(View v)
{
// Take what was typed into the EditText and use in TextView
mainTextView.setText(mainEditText.getText().toString()
+ " is yoloing on Android development!");
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
这是xml代码:
<!-- activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/main_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:text="@string/textview"/>
<!-- This nested layout contains views of its own -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!-- Set OnClickListener to trigger results when pressed -->
<Button
android:id="@+id/main_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:text="@string/button" />
<!-- Shows an image from your drawable resources -->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:src="@drawable/ic_launcher" />
<!-- Closing tag for the horizontal nested layout -->
</LinearLayout>
<!-- Displays keyboard when touched -->
<EditText
android:id="@+id/main_edittext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:hint="@string/hint" />
<!-- List whose dataset is defined in code with an adapter -->
<ListView
android:id="@+id/main_listview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginTop="20dp" />
</LinearLayout>
我用谷歌搜索并尝试了各种方法大约两个小时,但找不到问题。我选择的最低支持版本是4.0.3。我尝试从ListView中删除“ layout_weight”并给出20dp的“ layout_height”,只是看它是否是渲染问题,但仍然没有出现。无论我使用的是实际的layout_height还是layout_weight,都有一个突出显示的栏,如果我单击它,它似乎就是ListView所在的位置。问题是那里没有内容显示。文本字段值被保存或传输到ListView似乎有些问题。任何对此的见解将不胜感激!
您mNameList
最初是空的。在onClick中,您应该将新项目添加到ArrayAdapter
的数据集中。像这样更改您的onClick:
@Override
public void onClick(View v)
{
// Take what was typed into the EditText and use in TextView
mainTextView.setText(mainEditText.getText().toString()
+ " is yoloing on Android development!");
mArrayAdapter.add(mainEditText.getText().toString());
}
填写您的EditText
并单击按钮
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句