我是Android应用程序编程的新手,并尝试将ListView包含到我的Test-App中,但它无效。我不知道ListView是不可见还是甚至没有初始化。
活动代码:
public class SecondActivity extends Activity {
Button button;
ListView lview;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.second_layout);
button = (Button) findViewById(R.id.button2);
button.setOnClickListener(buttonClick);
ListAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, R.array.list_array);
lview = (ListView) findViewById(R.id.list_view);
lview.setAdapter(adapter);
lview.setBackgroundColor(Color.WHITE);
}
View.OnClickListener buttonClick = new View.OnClickListener() {
public void onClick(View v) {
finish();
}
};
}
布局XML:
<?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="wrap_content"
>
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Close Activity"
android:textSize="30sp"
/>
<ListView
android:id="@+id/list_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
Array XML:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="list_array">
<item>Im learning Android</item>
<item>Yeaaay programming is fun</item>
<item>OMG</item>
</string-array>
</resources>
我真的不明白为什么ListView没有显示,因为我按照一步一步的教程。希望有人能帮我解决问题。
答案 0 :(得分:0)
尝试给ListView一个高度为&#34; match_parent&#34;。
您目前将其作为&#34; wrap_content&#34;,但由于它是滚动视图,因此无法计算其子级的大小,因此它会折叠为0高度。
答案 1 :(得分:0)
我注意到的事情:new ArrayAdapter<String>(...)
ArrayAdapter是通用的。
在XML中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
答案 2 :(得分:0)
你的second_layout.xml有问题。它的高度应为match_parent
,列表视图的高度应为dp或match_parent
:
<?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="match_parent">
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Close Activity"
android:textSize="30sp"
/>
<ListView
android:id="@+id/list_view"
android:layout_width="fill_parent"
android:layout_height="500dp">
</ListView>
</LinearLayout>
答案 3 :(得分:0)
这是我的一个例子。它工作正常。只需更改/添加您的内容
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_functions);
String[] functions = {"ABC", "DEF", "GHI"};
ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, functions);
final ListView lv = (ListView) findViewById(R.id.functionsListView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
}
}
);
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
if(id == android.R.id.home){
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.pull_in_left, R.anim.push_out_right);
}
}
XML: activity_functions.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=".MyActivity"
android:background="@color/white">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/functionsListView"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="8dp"/>
</LinearLayout>
答案 4 :(得分:0)
ArrayAdapter(Context context, int resource, int textViewResourceId)
在分配ArrayAdapter之前,从资源中获取数组,例如
getResources().getStringArray(R.array.xxxx.xml);
并使用下面的构造函数
ArrayAdapter(Context context, int resource)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int resource, T[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int resource, List<T> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)