我正在尝试使用ListView
组件而且卡住了。
我只是想在我的活动中查看列表。我搜索了互联网的解决方案,
但我不知道我的代码有什么问题
activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.a05042.listviewproject.MainActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:id="@+id/ListViewMain"
android:background="@android:color/holo_blue_bright" />
</RelativeLayout>
activity_list.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAppearance="@style/TextAppearance.AppCompat.Display1"
android:textAlignment="center" />
</LinearLayout>
JAVA:
public class MainActivity extends AppCompatActivity {
String[] myItems = {"Sony","Toshiba","Samsung","y","daniel","sold","sail"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MakeListView();
}
public void MakeListView() {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.activity_list,myItems);
ListView lv = (ListView)findViewById(R.id.ListViewMain);
lv.setAdapter(adapter);
}
}
答案 0 :(得分:1)
您正在使用的构造函数是
/**
* Constructor
*
* @param context The current context.
* @param resource The resource ID for a layout file containing a TextView to use when
* instantiating views.
* @param objects The objects to represent in the ListView.
*/
public ArrayAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull T[] objects) {
this(context, resource, 0, Arrays.asList(objects));
}
ArrayAdapter
内部需要一个只有TextView
的布局。您有一个TextView
包裹在LinearLayout
中。您可以将布局更改为
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAppearance="@style/TextAppearance.AppCompat.Display1"
android:textAlignment="center" />
或使用允许您提供要使用的TextView的ID的构造函数
答案 1 :(得分:0)
您正在使用简单列表视图
因此您可以将适配器更改为
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, myItems );
或者如果您想要项目的自定义布局
然后你必须制作自己的适配器