【发布时间】:2015-03-27 09:16:04
【问题描述】:
我正在尝试创建具有自定义布局的ListView。 listView 中的每个项目应如下面的item.xml 所示。
在代码中,我使用了
adapter = new ArrayAdapter<T>(getApplicationContext(), R.layout.listi_tems_layout, topicsList);
但它不起作用,因为ArrayAdapter<T> 的构造函数接受第二个参数为int 类似
android.R.layout.simple_list_item_1
,在我的例子中,它是自定义布局,即
R.layout.listi_tems_layout
我应该使用哪个适配器或如何解决这个问题。谢谢
物品:
<?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="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<TextView
android:id="@+id/tvlist_topic"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<ImageView
android:id="@+id/ivList_delete"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:clickable="true"
android:src="@drawable/delete_icon"
android:contentDescription="icon to delete item from the Listview"
android:layout_weight="1"/>
<CheckBox
android:id="@+id/cbList_hook"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:checked="false"
android:layout_weight="1"/>
主布局:
<RelativeLayout
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"
tools:context="${relativePackage}.${activityClass}" >
....
....
....
<ListView
android:id="@+id/lvEco_topics"
android:layout_width="match_parent"
android:layout_height="470dp"
android:layout_below="@id/tvEco_topic"
android:layout_marginTop="30dp"
android:scrollbars="vertical"
android:divider="@android:drawable/alert_light_frame"></ListView>
<Button
android:id="@+id/btEco_save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/lvEco_topics"
android:gravity="center"
android:text="Save"/>
代码:
public class MainActivity extends Activity {
private ArrayList<String> topicsList;
private ListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
topicsList = new ArrayList<String>();
topicsList.add("topic1");
topicsList.add("topic2");
topicsList.add("topic3");
topicsList.add("topic4");
topicsList.add("topic5");
topicsList.add("topic6");
adapter = new ArrayAdapter<T>(getApplicationContext(), R.layout.listi_tems_layout, topicsList);
【问题讨论】:
-
使用
adapter = new ArrayAdapter<T>(getApplicationContext(), R.layout.listi_tems_layout, topicsList);有什么问题? -
@ρяσѕρєяK 我遇到的问题是 2 构造函数未定义"
-
@MD 我尝试了你的建议,但我收到警告说 2Type 安全:构造函数 ArrayAdapter(Context, int, List) 属于原始类型 ArrayAdapter。对泛型类型 ArrayAdapter
的引用应该被参数化” -
将适配器创建为
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.listi_tems_layout, topicsList);并查看我对其他更改的回答
标签: android android-layout listview android-arrayadapter